Redis支持的内存淘汰策略有哪些
1.no-eviction:禁止驱逐数据,也就是说当内存不足以容纳新写入数据时,新写入操作会报错。
2.volatile-ttl:从已设置过期时间的数据集(server.db.[i].expires)中挑选将要过期的数据淘汰;
3.volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰;
4.allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key;
5.allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰;
6.volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最少使用的数据淘汰;
4.0版本后增加了以下两种:
7.volatile-lfu:从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰;
8.allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中,移除最不经常使用的key。
注意:系统默认no-eviction。
当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以淘汰,则和noeviction一样返回错误。