【问题标题】:Store data in redis session to enable automatic expiration when session expires将数据存储在redis session中,启用session过期时自动过期
【发布时间】:2014-09-08 07:20:50
【问题描述】:
【问题讨论】:
标签:
java
session
tomcat
redis
【解决方案1】:
我不太确定你到底在追求什么,但我会根据我对你问题的阅读来尝试一下。
根据the Readme:
manager 依赖 Redis 原生的过期能力
自动会话过期的过期密钥,以避免开销
不断在整个会话列表中搜索过期会话
这意味着他们从 Redis 中提取数据,而不是在 Redis 之外进行缓存。
至于您的“自定义数据”,如果您仅将其存储在缓存中,那么当它到期时,它就不再可用了。以最简单的方式阅读您的问题,这就是您所追求的。
只要 Redis 有可用内存,就没有办法真正从内存中删除密钥。当密钥过期时,它不再显示在密钥列表中,并且对密钥中保存的数据的请求将返回空值,而不是在密钥过期之前存储在那里的数据。您可以做的最好的事情是在完成后将数据设置为空字符串。
如果您将数据存储在其他地方并希望收到密钥已过期的通知,那么考虑到框架,这是不可能的,即使是这样,我也建议您进行重构以避免产生冲突条件。
现在,从技术上讲,您可以直接与 Redis 对话并尝试使用 Keyspace Notification 机制,但此时人们希望避免最终运行并一直直接与 Redis 对话。我不确定它是否会为您提供在上述后一种情况下您所要求的通知。
干杯,
比尔