内存淘汰是maxmemory达到上限的时候,它的内存释放一种行为。redis提供了很多内存算法归纳起来Random算法,ttl算法,LRU算法,LFU算法。
Random算法是随机移除某个key
ttl算法是在设置过期时间去找到更早过期时间的key,进行有限移除
LRU算法是移除最近很少使用的key
LFU算法是跟LRU类似
LRU算法是很常用,它会维护大少为16的候选池的数据,根据时间进行排序,然后随机抽取5个候选池放到这个key里面,访问时间间隔最大key就会从候选池里面淘汰掉,这样会存在一个问题,假如有一个key很长时间没有访问,偶然一次访问的LRU就会把他当成热点key,所以在redis4里面增加LFU算法,相比LRU他是增加一个访问频率的维度来统计数据的热点情况,LFU是使用两个双向链表去形成一个二维的双向链表,一个是用保存访问频率,一个是用来保存访问频率相同的所有元素。