当现有内存大于 maxmemory 时,便会触发Redis主动淘汰内存方式,有如下几种淘汰方式:
Redis 4.0前提供 6种数据淘汰策略:
- volatile-lru:利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
 - allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)
 - volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
 - volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
 - allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
 - no-eviction:禁止驱逐数据,也就是说当内存不足以容纳新写入数据时,新写入操作会报错。这个应该没人使用吧!
 
Redis 4.0后增加以下两种:
- volatile-lfu:从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰(LFU(Least Frequently Used)算法,也就是最频繁被访问的数据将来最有可能被访问到)
 - allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的key。
 
