Redis - 多键查询

标签 redis servicestack.redis

我使用 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/

相关文章:

c# - ServiceStack Redis获取结构始终返回默认值

redis - 如何使用 ServiceStack 客户端管理器正确注册 Redis Master 和 Slaves?

c# - 使用 .Net 核心的 ServiceStack Redis(AWS ElastiCache 实现)导致错误 No master found in : redis-cluster-xxxxxxxx:637

redis - 故障转移和客户端超时

redis - 在 Redis 中使用键

performance - 使用 Redis 跟踪在线用户的 2 种方法。哪个更快?

redis - Redis 中固定大小的排序集?

redis - Redis 是否具有获取 ‘N geographically closest’ 的能力?

redis - ServiceStack 消息 API : Can it make a broadcast?

nosql - 无法使用 --pipe 进行 redis 批量插入