Spring-Session机制的数据结构理解

先看一下spring session在redis中数据结构
A) "spring:session:sessions:39feb101-87d4-42c7-ab53-ac6fe0d91925"
B) "spring:session:expirations:1523934840000"
C) "spring:session:sessions:expires:39feb101-87d4-42c7-ab53-ac6fe0d91925"

A键存储了session的数据信息,过期时间为35分钟,为什么不是30分钟下面再介绍。

但是redis键过期时,就无法访问到键的value了,也就是监听到session过期时,无法获得session中的内容,所以就引入了C键,C键的TTL为30分钟,监听到C键过期时也就代表session过期,A键还有5分钟才会过期,依然可以获取到session的数据

但是redis的键过期时会存在一个bug,就是键过期后不一定会被删除,所以就引入了B键,B键的value是一个set桶,保存着一分钟内应该过期的C键。spring只需要定时去扫描当前分钟对应的B键中的set集合中存储的C键,访问C键以保证redis忘记删除的C键被删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值