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

Java 在redis会话中存储数据,以便在会话过期时启用自动过期,java,session,tomcat,redis,Java,Session,Tomcat,Redis,在我们的应用程序中,我们在HTTPSession中存储了一些数据。现在,我们正在使用redis会话管理器。有没有办法将自定义数据存储在RedisSession而不是HTTPSession中,这样当RedisSession过期时,自定义数据也会自动删除 我使用的是tomcat redis会话管理器()我不太确定您到底想要什么,但根据我对您的问题的理解,我将对此进行讨论 根据: 管理器依赖于Redis的本机过期功能来 为自动会话过期而使密钥过期,以避免 不断搜索整个会话列表以查找过期的会话 这意味着

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


我使用的是tomcat redis会话管理器()

我不太确定您到底想要什么,但根据我对您的问题的理解,我将对此进行讨论

根据:

管理器依赖于Redis的本机过期功能来 为自动会话过期而使密钥过期,以避免 不断搜索整个会话列表以查找过期的会话

这意味着他们从Redis中提取数据,而不是将其与Redis一起缓存

至于您的“自定义数据”,如果您仅将其存储在缓存中,则当其过期时,将不再可用。用最简单的方式来理解你的问题,这就是你想要的

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

如果您将数据存储在其他位置,并且希望得到密钥已过期的通知,那么在给定框架的情况下,这是不可能的,即使是这样,我建议重构以避免产生冲突的情况

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

干杯, 账单