debbbbie Writings

深藏功与名

Follow me onGitHub

浅谈Redis数据库的键值设计

关系型数据转化为KV数据库,我的方法如下:

key 表名:主键值:列名

Set login:1:login_times 5
Set login:2:login_times 1
Set login:1:last_login_time 2011-1-1
Set login:2:last_login_time 2011-2-1
set login:1:name ”ken thompson“
set login:2:name “dennis ritchie”

一般用户是无法知道自己的id的,只知道自己的用户名, 所以还必须有一个从name到id的映射关系,这里的设计与上面的有所不同 set "login:ken thompson:id" 1 set "login:dennis ritchie:id" 2 这样每次用户登录的时候业务逻辑如下 ```

获得用户的id

uid = r.get("login:%s:id" % name)

自增用户的登录次数

ret = r.incr("login:%s:login_times" % uid)

更新该用户的最后登录时间

ret = r.set("login:%s:last_login_time" % uid, datetime.datetime.now()) ```