79.Redis 有哪几种数据“淘汰”策略?
Redis 内存数据集大小上升到一定大小的时候,就会进行数据淘汰策略。
Redis 提供了 6 种数据淘汰策略:
- volatile-lru
- volatile-ttl
- volatile-random
- allkeys-lru
- allkeys-random
- 【默认策略】no-enviction
具体的每种数据淘汰策略的定义,和如何选择讨论策略,可见 《Redis实战(二) 内存淘汰机制》 。
在 Redis 4.0 后,基于 LFU(Least Frequently Used)最近最少使用算法,增加了 2 种淘汰策略:
- volatile-lfu
- allkeys-lfu
? Redis LRU 算法
另外,Redis 的 LRU 算法,并不是一个严格的 LRU 实现。这意味着 Redis 不能选择最佳候选键来回收,也就是最久未被访问的那些键。相反,Redis 会尝试执行一个近似的 LRU 算法,通过采样一小部分键,然后在采样键中回收最适合(拥有最久未被访问时间)的那个。
Redis 没有使用真正实现严格的 LRU 算是的原因是,因为消耗更多的内存。然而对于使用 Redis 的应用来说,使用近似的 LRU 算法,事实上是等价的。
具体的可以看看如下文章: