繁体   English   中英

将数据存储在redis会话中以在会话过期时启用自动过期

[英]Store data in redis session to enable automatic expiration when session expires

在我们的应用程序中,我们将一些数据存储在HTTPSession中。 现在,我们正在使用redis会话管理器。 有没有一种方法可以将自定义数据存储在RedisSession中,而不是HTTPSession中,以便当Redis会话过期时,我们的自定义数据也可以自动删除?

我正在使用tomcat-redis-session-manager( https://github.com/jcoleman/tomcat-redis-session-manager

我不太确定您到底要做什么,但是我会根据对您问题的阅读来解决。

根据自述文件

管理器依靠Redis的本机到期功能来使密钥自动过期,从而避免了在整个会话列表中不断搜索过期会话的开销

这意味着他们从Redis中提取数据,而不是除了Redis之外还缓存它们。

至于你的“自定义数据”,如果你存储在这个缓存,那么到期时它不可了。 在最简单地阅读您的问题时,这就是您所追求的。

只要Redis有可用内存 ,就无法从内存中真正删除密钥 当密钥过期时,它不再显示在密钥列表中,并且对密钥中保存的数据的请求将返回空值,而不是密钥过期之前存储在其中的数据。 完成后,最好的办法是将数据设置为空字符串。

如果您将数据存储在其他位置并希望得到通知,则密钥已过期,对于该框架而言,这是不可能的,即使是这样,我也建议您进行重构以避免产生冲突条件。

现在,从技术上讲,您可以直接与Redis对话并尝试使用Keyspace Notification机制,但是到那时,您将希望避免最终运行并一直与Redis直接对话。 我不确定它是否还会向您提供您在上述后一种情况下要求的通知。

干杯,比尔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM