扫码阅读
手机扫码阅读

Redis 的过期策略都有哪些?

275 2024-07-17

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Redis 的过期策略都有哪些?
文章来源:
springboot葵花宝典
扫码关注公众号
Redis过期策略摘要

Redis 的过期策略摘要

1. Redis数据删除策略

1.1 惰性删除

惰性删除是在设置key过期时间后,只有当该key被访问时才会检查其是否过期。如果过期则删除,否则返回该key。

优点:对CPU友好,仅对使用的key进行检查。

缺点:对内存不友好,过期但未访问的key会一直占用内存。

1.2 定期删除

定期删除每隔一段时间检查部分随机key,并删除过期key。分为两种模式:

  • SLOW模式:默认每秒执行10次,每次耗时不超过25ms,可通过修改配置文件调整频率。
  • FAST模式:频率不固定,但两次间隔不少于2ms,每次耗时不超过1ms。

优点:减少对CPU的影响,同时释放过期键占用的内存。

缺点:难以确定删除操作的执行时长和频率。

2. Redis内存淘汰策略

当内存不足时,Redis会根据某种规则删除数据以腾出空间。支持以下8种策略:

  • noeviction:不淘汰key,内存满时拒绝写入新数据。
  • volatile-ttl:优先淘汰TTL值较小的key。
  • allkeys-random:随机淘汰任意key。
  • volatile-random:随机淘汰有TTL的key。
  • allkeys-lru:基于LRU算法淘汰任意key。
  • volatile-lru:基于LRU算法淘汰有TTL的key。
  • allkeys-lfu:基于LFU算法淘汰任意key。
  • volatile-lfu:基于LFU算法淘汰有TTL的key。

2.1 LRU与LFU算法

LRU(最近最少使用):根据最后一次访问时间,优先淘汰访问时间较久的key。

LFU(最少频率使用):根据访问频率,优先淘汰访问次数较少的key。

2.2 使用建议

  • 如果数据有明显冷热区分,优先使用 allkeys-lru 策略。
  • 如果数据访问频率差别不大,建议使用 allkeys-random 策略。
  • 如果需要置顶数据,可使用 volatile-lru 策略,同时置顶数据不设置过期时间。
  • 如果有短时高频访问数据,可使用 allkeys-lfuvolatile-lfu 策略。

3. 面试题总结

  • Redis的数据过期策略:包括惰性删除和定期删除,两者配合使用。
  • Redis的数据淘汰策略:支持8种策略,推荐根据业务需求选择合适的淘汰算法(如LRU或LFU)。
  • 热点数据保证:使用 allkeys-lru 策略可保证缓存的都是热点数据。
  • 内存耗尽处理:默认设置会直接报错,可通过淘汰策略释放空间。

想要了解更多内容?

查看原文:Redis 的过期策略都有哪些?
文章来源:
springboot葵花宝典
扫码关注公众号