Administrator
Published on 2025-03-09 / 7 Visits
14
0

Redis 的内存淘汰策略

图标
文章摘要
LIK.CC-GPT

Redis 的内存淘汰策略有以下 8 种类型:

1.不淘汰策略

  • noeviction:当内存使用达到阈值时,所有导致内存增加的命令将返回错误,不淘汰任何数据。这是 Redis 的默认策略。

2.基于所有键的淘汰策略

  • allkeys-random:从所有键中随机选择一个进行淘汰。
  • allkeys-lru:基于最近最少使用(LRU)算法,从所有键中淘汰最近最少使用的键。
  • allkeys-lfu:基于最少频率使用(LFU)算法,从所有键中淘汰访问频率最低的键。

3.仅基于设置了过期时间的键的淘汰策略

  • volatile-random:从设置了过期时间的键中随机选择一个进行淘汰。
  • volatile-lru:基于 LRU 算法,从设置了过期时间的键中淘汰最近最少使用的键。
  • volatile-lfu:基于 LFU 算法,从设置了过期时间的键中淘汰访问频率最低的键。
  • volatile-ttl:从设置了过期时间的键中,淘汰剩余生存时间(TTL)最短的键。

选择策略的依据

  • 业务场景:如果业务中存在大量临时性数据,可优先考虑 volatile-lruvolatile-lfu 等仅针对设置了过期时间的键的淘汰策略。
  • 数据访问模式:对于数据访问模式不均匀的场景,allkeys-lruallkeys-lfu 能有效淘汰冷数据。
  • 性能要求:淘汰策略的执行效率对系统性能有影响,如 allkeys-lruallkeys-lfu 需要维护额外的字段,会增加一定的性能开销。
  • 数据丢失容忍度:如果业务对数据丢失容忍度极低,可选择 noeviction 策略。

通过合理选择和配置 Redis 的内存淘汰策略,可以更好地满足不同业务场景下的缓存需求,提高系统的性能和稳定性。


Comment