redis过期时间的过期策略

缘起,今天被一哥们问到redis的失效时间是怎么实现的,有哪些过期策略?

我听完这个问题的反应 ======》》》》黑人问号脸,你在说啥啊老哥。

 

回来后自己查查吧,这个问题应该是属于知识面的问题,理解起来应该不难。

redis采用两个过期策略来过期他的key:懒汉式删除+定期删除

 

懒汉式删除流程:

当有客户端想要操作,比如get或者setnx这个key的时候,那么这个时候会检查下这个key是否已经过期,如果已经过期了,则直接删除,也不再执行操作命令;如果没有过期,那么就继续执行操作命令。

的确很像一个懒汉,和我自己差不多,袜子一定是要到明天没得穿了才会去洗。这个懒汉一定也是发现有命令想要操作这个key的时候才去看看这个key有没有过期。

 

定期删除流程:

会遍历每个数据库,redis中默认会有16个数据库。

默认是每个库检查20个key,注意相当于该循环执行20次,循环体是下边的描述:

如果在一个库中没有设置了过期时间的key,那就直接遍历下一个数据库;如果有,获取该key,检查是否过期,如果过期,则删除;判断删除操作是否达到指定时长,如果达到,则退出。

 


我的个人博客  http://generalcode.cn/archives/131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值