Python で Redis を触ってみました。オートインクリメントやインデックス用のkeyを使うイディオムがある。
import json
import redis
r = redis.Redis()
def create_user(name, auth):
uid = r.incr('global:next_uid') # ユニークなIDを取得
return put_user(uid, name, auth)
def get_user(uid):
value = r.get('user:%s' % uid)
if value:
return json.loads(value)
def put_user(uid, name, auth):
user = {'uid': uid, 'name': name, 'auth': auth}
r.set('user:%s' % uid, json.dumps(user))
r.set('index:user:auth:%s' % auth, uid) # auth -> uid を引くため
return user
def get_user_by_auth(auth):
uid = r.get('index:user:auth:%s' % auth)
if not uid:
return
return get_user(uid)
a = create_user('wozozo', 'xxxxxxxx')
b = get_user(a['uid'])
assert a == b
put_user(a['uid'], b['name'], 'yyyyyyyy')
c = get_user_by_auth('yyyyyyyy')