Redis有8种淘汰策略(常规的+Redis4.0新增的2种lfu策略)
名词解释
lru(less recently used)最近最少使用
ttl(time to live)存活时间
lfu(least frequency use)最少使用频率
淘汰策略
1、 no-eviction(默认策略):不淘汰策略,超过最大内存则返回错误信息;
2、 volatile-lru:已经设置过期时间的KV集中,优先淘汰最近最少使用的;
3、 volatile-ttl:已经设置过期时间的KV集中,优先淘汰剩余存活时间短的;
4、 volatile-random:已经设置过期时间的KV集中,随机选择数据淘汰;
5、 allkeys-lru:所有KV集中,优先淘汰最近最少使用的;
6、 allkeys-random:所有KV集中,随机选择需要淘汰的数据;
新增的两种lfu策略:统计访问频率,将访问频率最少的淘汰掉;
7、 volatile-lfu
8、 allkeys-lfu
lru和lfu的区别
时间:t1~~~~~t2~~~~~t3~~~~t4
~~~~A~A~A~~A~A~A~A~A~~A~~~
~~~~B~~~~~~B~~~~~~B~~~~~~B~
在上图中,分别表示key A和B的使用情况,在t4时刻根据lru和lfu两种淘汰策略:
- lru策略:因为最近使用的是B,所以会淘汰A;
- lfu策略:A的使用频率高很多,所以淘汰的是B;