casino-server
Version:
An multi-rule scalable online poker game server powered by redis, node.js and socket.io
63 lines (43 loc) • 1.34 kB
Markdown
# redis database structure #
## server instance ##
server id: number
"server:seq" (counter)
// set when startup, update expire in heartbeat, remove when shutdown
"server:instance:xxx" (hash map) -> {
id: xxx,
gamers: n,
}
"server:all" (sorted set) -> [ id, id, ... ], scored by heartbeat time
// update when user login/logout, update expire in heartbeat, remove when shutdown
"server:s_xxx:gamers" (set) -> [ uid, uid, ... ]
## master ##
enumrate keys "server:s_xxx", if id == self.id, then it's the master
master will maintain following data:
"server:all", clean the id older than 5 sec
## user table ##
uid format: u + number, for example: u1001, u1002, u1003
```javascript
"user:seq", (counter), for default uid
"user:count", (number), update when signup/delete account
"user:u_xxx" : {
uid: 'uxxx', // unique, by default 'unnn'
name: 'xxx',
passwd: 'xxx',
uuid: 'xxx-xxx',
phone: 'nnn',
email: 'xxx.xxx',
phone_v: 0, // 1 if phone validated with SMS
email_v: 0, // 1 if email validated with link in email
avatar: '',
coins: 0,
score: 0,
exp: 0,
level: 0,
online: 0,
created: 0, // now
last_login: 0, // now = new Date().getTime()
drop_time: 0
}
"user:online" (set) -> [ uid, uid, ... ] // update when login/logout
"user:dropped" (set) -> [ uid, uid, ... ] // update when drop/re-login
```