redis4.0之后一共有8中淘汰策略。我们按照是否会进行数据淘汰把他们分成两类:
-
不进行数据淘汰的策略,只有noeviction这一种
-
会进行数据淘汰的7中其他策略。
会进行淘汰的其中策略,我们可以进一步根据淘汰候选数据集的范围把他们分成两类:
在设置了过期时间的数据中进行淘汰,包括volatile-random、volatile-ttl、volatile-lru、volatile-lfu
在所有数据范围内进行淘汰,包括allkeys-lru、allkeys-random、allkeys-lfu。
-
volatile-ttl在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进行删除,越早过期的越先被删除。
-
volatile-random就像它的名字一样,在设置了过期时间的键值对中随机删除。
-
volatile-lru 使用lru算法筛选设置了过期时间的键值对
-
volatile-lfu 会使用lfu算法选择设置了过期时间的键值对。
-
allkeys-random策略,从所有键值对中随机选择并删除数据
-
allkeys-lru策略,使用lru算法在所有数据中进行筛选
-
allkeys-lfu策略,使用lfu算法在所有数据中进行筛选