redis过期时间的过期策略

来源:互联网 发布:淘宝上的qq号能买吗 编辑:程序博客网 时间:2024/05/17 04:54

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

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

 

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

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

 

懒汉式删除流程:

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

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

 

定期删除流程:

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

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

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

 


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

原创粉丝点击