我正在使用新发布的 Spring Session 组件进行 PoC。这是由 Redis 存储库备份的,其中 Session 和存储在 session 中的对象/数据都被持久化到其中。
- 会话在应用程序中创建
- 在 Redis CLI 中运行“Keys *”命令并看到一个新条目(如“spring:session:sessions:6b55103a-baf5-4a05-a127-3a9cfa15c164”)
- 从应用程序中,向会话添加了一个自定义 bean
- 在 Redis CLI 中运行“Keys *”命令并看到该 bean 的另一个新条目(例如“\xac\xed\x00\x05t\x00\tcustomer1”,因为 bean 有一个值为 'customer1' 的字符串)
- 我已经配置了 30 秒的自动过期时间,并让该应用程序在此期间未使用
- sessionDestroyEvent 被触发并在实现 ApplicationListener 的侦听器中捕获
- 在 Redis CLI 中运行“Keys *”命令,现在为会话创建的第一个条目消失了,但自定义 bean 对象(customer1)仍然留在 Redis 中
问题:
清理 Redis Store 是用户的责任吗?如果我的会话中存储了许多数据元素,我是否必须在会话销毁(注销和超时事件)期间从 redis 存储中手动清理它们。
更新:
虽然我发布了这个问题并返回(可能在 3/4 分钟后)到 Redis-CLI 列出密钥,但现在我没有找到 Customer1 对象。那么这是否意味着 Redis 会定期执行清理,例如垃圾收集?