0

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

如果我要锁定用户的帐户,我目前必须检查所有会话并检查它们是否是用户的然后删除它们。

有没有办法也可以通过用户 ID 进行查询?我应该使用仅具有标准键值的排序集吗?

4

1 回答 1

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>
于 2014-02-07T22:28:37.133 回答