Spring Session Redis 数据未清除 Redis 中会话的索引

Lau*_*nzo 6 spring-security spring-data-redis spring-boot spring-session

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

但是,有时在 Redis 中(在会话已过期但未执行注销之后),前缀为 的密钥的spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:TTL 仍为 -1,这意味着 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)

相关依赖:

  • 春季启动2.6.2
  • 春季安全5.6.1
  • 春季会议核心 2.5.0
  • Spring会话数据Redis 2.5.0
  • Spring数据Redis 2.6.0

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

Ele*_*ana 5

这是Spring Session 2.5.3 及之前版本中的一个错误。

如果您更新到 Spring Session 2.5.4 或任何 2.6.x,该问题就会得到解决。