79.Redis 有哪几种数据“淘汰”策略?

Redis 内存数据集大小上升到一定大小的时候,就会进行数据淘汰策略。

Redis 提供了 6 种数据淘汰策略:

  1. volatile-lru
  2. volatile-ttl
  3. volatile-random
  4. allkeys-lru
  5. allkeys-random
  6. 【默认策略】no-enviction

具体的每种数据淘汰策略的定义,和如何选择讨论策略,可见 《Redis实战(二) 内存淘汰机制》

在 Redis 4.0 后,基于 LFU(Least Frequently Used)最近最少使用算法,增加了 2 种淘汰策略:

  1. volatile-lfu
  2. allkeys-lfu

? Redis LRU 算法

另外,Redis 的 LRU 算法,并不是一个严格的 LRU 实现。这意味着 Redis 不能选择最佳候选键来回收,也就是最久未被访问的那些键。相反,Redis 会尝试执行一个近似的 LRU 算法,通过采样一小部分键,然后在采样键中回收最适合(拥有最久未被访问时间)的那个。

Redis 没有使用真正实现严格的 LRU 算是的原因是,因为消耗更多的内存。然而对于使用 Redis 的应用来说,使用近似的 LRU 算法,事实上是等价的。

具体的可以看看如下文章: