Redis内存淘汰机制
Redis内存淘汰机制Redis配置文件中可以设置maxmemory,即内存的最大使用量,到达设置值时会执行内存淘汰机制。其中,LRU(least recently used)为最近最少用到的,LFU(Least Frequently Used)为最不常用的。
volatile-lru -> 使用 LRU 算法删除过期字典中的key allkeys-lru -> 根据 LRU 算法删除任意key volatile-lfu -> 使用 LFU 算法删除过期字典中的key allkeys-lf-> 根据 LFU 算法删除任意key volatile-random -> 随机删除一个过期字典中的key allkeys-random -> 随机删除一个key volatile-ttl -> 删除过期时间最近的key noeviction -> 根本不过期,只在写操作时返回一个错误
注意这里的6种机制,volatile和allkeys规定了是对已设置过期时间的数据集淘汰数据还是从全部数据集淘汰数据,后面的lru、ttl以及random是三种不同的淘汰策略,再加上一种no-enviction永不回收的策略。
选取内存淘汰策略的规则:
- 如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random



