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的文档查看详细介绍。