我正在为我的旁边项目设计一个会话管理系统,我正在努力寻找一个满足以下要求的简单解决方案:
要求:
我已经看到允许用户拥有自然过期的多个会话的方法(例如Redis和生成的密钥)。但是,这种方法不能提供一种直接的方法来使属于用户的所有会话无效,因为会话的每个密钥都是随机生成的值。
我还看到了一种方法,用户可以通过跟踪RDBMS表中用户生成的会话ID来拥有多个会话。虽然这样可以很容易地使属于用户的所有会话无效,但我现在有一个额外的进程必须使过期的会话无效/删除,因为数据库(PostgreSQL,MySQL等)不会自己执行此操作。
有没有办法让我可以拥有所有3个?
答案 0 :(得分:0)
据我所知,我可以使用redis本身提出一个解决方案。您可以Redis Hash获取所需的所有会话,而不是为每个会话分配一个单独的密钥。
基本上,哈希的键将是您在客户端生成的唯一会话ID,值将是您希望每个会话维护的任何类型的数据(您可以将JSON保存为字符串)。
然后,您可以在整个哈希上应用TTL,以便立即使所有密钥失效。从而满足您的所有要求