Redis key过期了是否会马上删除
Redis key过期了是否会马上删除
·
首先确认,并不会马上删除,Redis也是有过期删除策略的:
1、定期选取部分数据删除。
2、惰性删除。
定期删除:
所谓定期删除,就是Redis定时去删除过期数据,Redis每100ms执行一次,每次随机抽取20个设置了过期时间的key,检查是否过期,如果发现过期了就直接删除。
具体执行步骤如下:
1、从所有设置了过期时间的key集合中随机抽取20个key。
2、删除抽取的key中已经过期的数据。
3、过期的key超过25%,则继续随机抽取,直到不超过25%。
惰性删除:
惰性也可以理解成懒,原理也很简单,当客户端发送请求查询某一个key时,检查key是否过期,如果过期了,则删除该key。将删除数据的主动权交给了客户端。
总结:
为什么会同时存在两种删除策略呢?个人理解是互补,相互减小压力。
假如Redis中存放了500W个key,且都设置了过期时间,使用定期删除也是需要很长时间才能将过期数据删除,在这期间还会不断有新的过期数据产生。这个时候惰性删除就能帮上忙了;反之也是同样的道理,一个已经过期的key=test1,客户端从来没人访问过,这时候惰性删除就不能起作用了,只能依靠定期删除来清理掉这个key。
更多推荐
已为社区贡献1条内容
所有评论(0)