Redis-删除策略-定期删除

定期删除

  • Redis启动服务器初始化时,读取配置server.hz的值,默认为10
  • 每秒钟执行server.hz次serverCron()--->databasesCron()--->activeExpireCycle()
  • activeExpireCycle()对每个expires[*]逐一进行检测,每次执行250ms/server.hz
  • 对某个expires[*]检测时,随机挑选W个key检测
    • 如果key超时,删除key
    • 如果一轮中删除的key的数量>W*25%,循环该过程
    • 如果一轮中删除的key的数量<=W*25%,检查下一个expires[*],0-15循环
    • W取值=ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP属性值
  • 参数current_db用于记录activeExpireCycle()进入哪个expires[*]执行
  • 如果activeExpireCycle()执行时间到期,下次从current_db继续向下执行

定期删除

  • 周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
  • 特点1:CPU性能占用设置有峰值,检测频度可自定义设置
  • 特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
  • 总结:周期性检查存储空间(随机抽查,重点抽查)

删除策略对比

删除策略 对比结果
定时删除 1.节约内存,无占用 2.不分时段占用CPU资源,频度高 3.拿时间换空间
惰性删除 1.内存占用严重 2.延时执行,CPU利用率高 3.拿空间换时间
定期删除 1.内存定期随机清理 2.每秒花费固定的CPU资源维护内存 3.随机抽查,重点抽查
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背后的流星击穿胸膛,在无数个日夜期盼的方向,岁月扭曲了光芒,创造的梦,翻不过的来生。
    不俗小七阅读 537评论 1 12
  • 管理工具 git: 版本管理控制工具webpack: 打包工具SVN:grount:禅道:项目管理码云:管理工具 ...
    LabRaDor2079阅读 213评论 0 0
  • 《世说新语·伤逝》 【原文】 顾彦先平生好琴,及丧,家人常以琴置灵床上。张季鹰往哭之,不胜其恸,遂径上床鼓琴,作数...
    扬菁阅读 1,613评论 1 4
  • 撰文 苏尘惜 甜润的女声从广播里传来,那声音仿佛春日里拂面而过的一阵轻风,让人心里微微一颤,被触动。 大抵很少有人...
    苏尘惜阅读 484评论 1 5
  • 我手机的听筒不好,稍微吵闹一点的地方就听不清。 我首先要在这里黑一下三星s7。 今天下班晚,八点多在地铁上接到一个...
    赤橙酱阅读 1,285评论 0 0