我使用 Redis 通过登录时生成的 GUID 存储用户 session 。我将其用作 session 对象中的键。
如果我要锁定用户的帐户,我目前必须检查所有 session 并检查它们是否是用户的,然后将其删除。
有没有办法也可以通过用户id查询?我应该使用仅包含标准键值的已排序集合吗?
最佳答案
遍历所有键可能不是最好的主意。您可以做的是将每个用户 session 的 guid 存储在另一个键中——set 数据类型似乎是最好的选择——并在用户打开/关闭 session 时添加/删除它。因此,当用户打开新 session 时,您将:
SET session:<guid> <session_object>
SADD user_sessions:<user_id> <session_guid>
当 session 关闭时,您将执行:
DEL session:<guid>
SREM user_sessions:<user_id> <session_guid>
查找哪些 session guid 是用户的,例如要锁定帐户,请执行以下操作:
SMEMBERS sessions:<user_id>
关于Redis - 多键查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621824/