redis过期时间的过期策略
2017-07-28 18:59
381 查看
缘起,今天被一哥们问到redis的失效时间是怎么实现的,有哪些过期策略?
我听完这个问题的反应 ======》》》》黑人问号脸,你在说啥啊老哥。
回来后自己查查吧,这个问题应该是属于知识面的问题,理解起来应该不难。
redis采用两个过期策略来过期他的key:懒汉式删除+定期删除
懒汉式删除流程:
当有客户端想要操作,比如get或者setnx这个key的时候,那么这个时候会检查下这个key是否已经过期,如果已经过期了,则直接删除,也不再执行操作命令;如果没有过期,那么就继续执行操作命令。
的确很像一个懒汉,和我自己差不多,袜子一定是要到明天没得穿了才会去洗。这个懒汉一定也是发现有命令想要操作这个key的时候才去看看这个key有没有过期。
定期删除流程:
会遍历每个数据库,redis中默认会有16个数据库。
默认是每个库检查20个key,注意相当于该循环执行20次,循环体是下边的描述:
如果在一个库中没有设置了过期时间的key,那就直接遍历下一个数据库;如果有,获取该key,检查是否过期,如果过期,则删除;判断删除操作是否达到指定时长,如果达到,则退出。
我的个人博客 http://generalcode.cn/archives/131
我听完这个问题的反应 ======》》》》黑人问号脸,你在说啥啊老哥。
回来后自己查查吧,这个问题应该是属于知识面的问题,理解起来应该不难。
redis采用两个过期策略来过期他的key:懒汉式删除+定期删除
懒汉式删除流程:
当有客户端想要操作,比如get或者setnx这个key的时候,那么这个时候会检查下这个key是否已经过期,如果已经过期了,则直接删除,也不再执行操作命令;如果没有过期,那么就继续执行操作命令。
的确很像一个懒汉,和我自己差不多,袜子一定是要到明天没得穿了才会去洗。这个懒汉一定也是发现有命令想要操作这个key的时候才去看看这个key有没有过期。
定期删除流程:
会遍历每个数据库,redis中默认会有16个数据库。
默认是每个库检查20个key,注意相当于该循环执行20次,循环体是下边的描述:
如果在一个库中没有设置了过期时间的key,那就直接遍历下一个数据库;如果有,获取该key,检查是否过期,如果过期,则删除;判断删除操作是否达到指定时长,如果达到,则退出。
我的个人博客 http://generalcode.cn/archives/131
相关文章推荐
- redis过期时间和删除策略
- Redis学习笔记(3)-Redis事务,过期时间,队列
- Redis过期策略 实现原理
- redis文档翻译_key设置过期时间
- Redis中删除过期Key的三种策略
- spring-data-redis 使用pipeline批量设置过期时间的bug
- Redis系列(三)--过期策略
- redis过期策略
- 阿里云Redis数据过期和淘汰策略解答
- 关于Redis数据过期策略
- Redis中删除过期Key的三种策略
- Redis 过期键的设置、获取和删除过期时间
- Redis 下key的过期时间详解
- 002-Redis五种数据类型-设置key的过期时间
- redis 的6种过期策略
- redis过期时间
- redis里能不能针对set数据的每个member设置过期时间?
- redis之hash类型设置过期时间
- 缓存策略交互 — 最长使用期限和最长过期时间
- Redis中的过期键删除策略