spring-session是怎样使用redis存session的?
其实,我的直觉告诉我使用Hash。
我在项目里找到RedisOperationsSessionRepository然后在注释中找到了答案
Each session is stored in Redis as a Hash. Each session is set and updated using the HMSET command.
|
|
33fdd1b6-b496-4b33-9f7d-df96679d32fe
是session idcreationTime 1404360000000
是session的创建时间maxInactiveInterval 1800
是过期时间lastAccessedTime 1404360000000
是最后访问时间- 后面的就是一些自定义的属性了
当然,除了上面的这些,在Redis中还存了一些过期时间相关的数据
|
|
原因是Spring Session依赖Redis的过期键的删除触发SessionDestroyedEvent
事件来释放资源。但是,Redis的键过期之后不能保证立马删除,所以就会有后台任务不断地访问session过期键来触发Redis过期键删除。
这个可以在RedisOperationsSessionRepository
的注释或者Spring Session的文档查看详细介绍。