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())