【redis教程】12、redis中过期数据的删除策略

redis是一种内存级的数据,所有数据均放在内存中,内存中的数据可以通过ttl指令获取其状态,

  • xx:具有时效性的数据
  • -1:永久有效的数据
  • -2:已经过期的数据 或 被删除的数据 或 未定义的数据

对于过期的数据要redis根据会删除策略进行删除。删除策略有:

  • 定时删除
  • 惰性删除
  • 定期删除

一、定时删除

创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作。
优点 节约内存,到时就删除,快速释放内存
缺点 当CPU压力很大时,会影响redis服务器的相应时间和指令吞吐量
总结 用处理器性能换取存储空间

二、惰性删除

数据到期的时候先不忙删,直到再次访问此数据时再删除。
优点 节约CPU性能,发现必须删除时才删除
缺点 内存压力很大,出现长期占用内存的数据
总结 用存储空间换取处理器性能

三、定期删除

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

四、数据逐出策略

存储新数据时会检查内存是否满足大小,如果内存不足就要使用数据逐出策略,在4.0以上版本默认不逐出。
【redis教程】12、redis中过期数据的删除策略
【redis教程】12、redis中过期数据的删除策略