Redis - 超过密钥查询

时间:2014-02-07 07:30:58

标签: redis servicestack.redis

我使用redis通过登录时生成的guid存储用户会话。我将其用作会话对象中的密钥。

如果我要锁定用户的帐户,我当前必须经历所有会话并检查他们是否是用户的,然后将其删除。

有没有办法按用户ID查询?我应该使用仅按标准键值保险的有序集吗?

1 个答案:

答案 0 :(得分:2)

通过所有键可能不是最好的主意。你可以做的是将每个用户会话的guid存储在另一个密钥中 - 设置数据类型似乎是最佳选择 - 并在用户打开/关闭会话时添加/删除它。因此,当用户打开新会话时,您将:

SET session:<guid> <session_object>
SADD user_sessions:<user_id> <session_guid>

当会话结束时,你会这样做:

DEL session:<guid>
SREM user_sessions:<user_id> <session_guid>

要查找哪些会话guid是用户,例如对于帐户锁定,请执行:

SMEMBERS sessions:<user_id>