我使用redis通过登录时生成的guid存储用户会话。我将其用作会话对象中的密钥。
如果我要锁定用户的帐户,我当前必须经历所有会话并检查他们是否是用户的,然后将其删除。
有没有办法按用户ID查询?我应该使用仅按标准键值保险的有序集吗?
答案 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>