【问题标题】:Spring Session Redis Data is not clearing index to sessions in RedisSpring Session Redis Data 未清除 Redis 中会话的索引
【发布时间】:2022-01-28 09:35:28
【问题描述】:

我正在使用 Spring Session Redis Data(配置了自动配置,目前没有自定义),默认使用 FindByIndexNameSessionRepository 作为 SessionRepository 实现。

但是,有时在 Redis 中(在会话已经过期但未执行注销之后),前缀为 spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME: 的密钥以 -1 的 TTL 持续存在,这意味着 Redis 不会使密钥过期。

为什么当会话过期时 Spring Session(Redis 数据)不清理这个键?我在文档中也找不到提及。

如文档中所述,我已将具有主体名称的属性存储到会话中,但这并不能解决此问题。详情请见https://docs.spring.io/spring-session/reference/api.html#api-findbyindexnamesessionrepository

使用的Redis版本:6.2.6(bitnami/redis的docker镜像:6.2.6)

相关依赖:

  • Spring Boot 2.6.2
  • Spring 安全 5.6.1
  • Spring 会话核心 2.5.0
  • Spring 会话数据 Redis 2.5.0
  • Spring Data Redis 2.6.0

我不希望索引持久化的原因是,如果有很多用户至少登录过一次并且有一个持久化到 Redis 的密钥,它就像索引一样,那么 Redis 将不得不存储可能长时间(或根本)无法访问。

【问题讨论】:

  • 您似乎遇到了this issue,该问题已在 Spring Session 2.6.x 中修复。尝试升级到最新版本的 Spring Session。
  • 嗨@EleftheriaStein-Kousathana!感谢您指出该问题。这解决了问题!你能回答一下,让我接受吗?谢谢!

标签: spring-boot spring-security spring-data-redis spring-session


【解决方案1】:

这是 a bug 在 Spring Session 版本 2.5.3 及之前的版本中。

如果您更新到 Spring Session 2.5.4 或任何 2.6.x,则问题已修复。

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2018-12-16
    • 2018-03-14
    • 2016-05-31
    • 2022-01-27
    • 2021-01-06
    • 2015-12-23
    • 1970-01-01
    • 2016-12-31
    相关资源
    最近更新 更多