资讯专栏INFORMATION COLUMN

讨论一下redis的过期键删除机制

jsdt / 768人阅读

摘要:问题如果一个键过期了,那么它什么时候会被删除呢有三个答案定时删除在设置键的过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作。

近来重新复习了一下redis,对redis的理解又深入一层。

百度谷歌上搜到资料有一些压根是错的,但是却被放在了搜索结果前几个,感觉无奈无爱! (当然我也不保证我的是全对的,毕竟不同角度有不同的看法)

参考资料书籍:Redis设计与实现 出版社:机械工业出版社。P107 ~ P111

问题:如果一个键过期了,那么它什么时候会被删除呢?有三个答案

定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作 .。

这种过期策略对内存友好,但对CPU是非常不友好的。因为还要主动设定定时器并主动删除,即通过CPU换内存(CPU主动删除了内存中的数据嘛,CPU忙,内存空闲)。可以想象一下在大数据大并发的时候,这种机制是多么灾难

惰性删除(Lazy Expiration):redis内部不会监视记录是否过期,但是每次从键空间获取键时,检查记录是否过期。这种技术被称为lazy(惰性)expiration。

与定时删除相反,此删除机制对内存是不友好的对CPU是友好的,惰性删除不会主动去删除已到期(expire)的键,而是等有需要调用的时候再判断,即内存换CPU(内存中有大量残留数据)

定期删除:每隔一段时间,对redis数据库进行一次检查,删除里面的过期键

属于前两种方法的折中.但要注意操作检查执行的时间和频率,如果删除操作做的太频繁,或者检查执行的时间太长,定期策略就会退化成定时策略。

如果检查执行的频率太少或者检查执行的时间太少,就会变成和惰性策略一样。

Redis服务器实际使用的是惰性删除和定期删除策略两种策略,配合使用两种策略和在使用CPU和内存找到平衡点。

惰性删除为redis服务器内置策略,定期删除在redis.conf 的hz选项,默认为10 (即1秒执行10次,100ms一次)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38734.html

相关文章

  • 讨论一下redis过期删除机制

    摘要:问题如果一个键过期了,那么它什么时候会被删除呢有三个答案定时删除在设置键的过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作。 近来重新复习了一下redis,对redis的理解又深入一层。 百度谷歌上搜到资料有一些压根是错的,但是却被放在了搜索结果前几个,感觉无奈无爱! (当然我也不保证我的是全对的,毕竟不同角度有不同的看法) 参考资料书籍:Redis设计...

    Freelander 评论0 收藏0
  • 深入浅出 Redis client/server交互流程

    摘要:进入方法,该方法下主要有和方法,主要用于读取挂起的回复,方法用于将当前中的内容写入到套接字描述符中,并传输内容。 申明 本文由笔者首发于InfoQ:《深入浅出 Redis client/server交互流程》 由于自己开了blog,所以将之前比较好的文章挪过来便于大家浏览。 综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是...

    andot 评论0 收藏0
  • 关于redis几件小事(四)redis过期策略以及内存淘汰机制

    摘要:的过期策略是什么样的采用了定期删除惰性删除的过期策略。定期删除原理定期删除指的是默认每隔就随机抽取一些设置了过期时间的,检测这些是否过期,如果过期了就将其删掉。所有只会抽取一部分而不会全部检查。 1.数据为什么会过期? 首先,要明白redis是用来做数据缓存的,不是用来做数据存储的(当然也可以当数据库用),所以数据时候过期的,过期的数据就不见了,过期主要有两种情况, ①在设置缓存数据时制定了...

    AbnerMing 评论0 收藏0
  • 从零单排学Redis【白银】

    摘要:对于数据结构哈希表我们在上一篇也已经详细说了。键空间示意图的数据库就是使用字典哈希表来作为底层实现的,对数据库的增删改查都是构建在字典哈希表的操作之上的。 前言 只有光头才能变强 今天继续来学习Redis,上一篇从零单排学Redis【青铜】已经将Redis常用的数据结构过了一遍了。如果还没看的同学可以先去看一遍再回来~ 这篇主要讲的内容有: Redis服务器的数据库 Redis对过期...

    denson 评论0 收藏0
  • 从零单排学Redis【白银】

    摘要:对于数据结构哈希表我们在上一篇也已经详细说了。键空间示意图的数据库就是使用字典哈希表来作为底层实现的,对数据库的增删改查都是构建在字典哈希表的操作之上的。 前言 只有光头才能变强 今天继续来学习Redis,上一篇从零单排学Redis【青铜】已经将Redis常用的数据结构过了一遍了。如果还没看的同学可以先去看一遍再回来~ 这篇主要讲的内容有: Redis服务器的数据库 Redis对过期...

    zqhxuyuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<