缓存的容量终究是有限的,需要按一定规则淘汰出去,为新来的数据腾出空间,提高缓存命中率,提升应用的访问性能。缓存容量的规划通常是需要结合应用数据实际访问特征和成本开销来综合考虑的,建议把缓存容量设置为总数据量的 15% 到 30%,兼顾访问性能和内存空间开销。设置容量命令(如4gb):CONFIG SET maxmemory 4gb

8种淘汰策略:noeviction、volatile-random、volatile-ttl、volatile-lru、volatile-lfu、allkeys-lru、allkeys-random、allkeys-lfu
大体分为两类,noeviction(不淘汰数据),缓存被写满了,再有写请求时 Redis 不再提供服务,直接返回错误。另外7种是一类,按照一定范围对缓存数据进行淘汰,对设置过期时间的数据进行淘汰,和对所有数据进行淘汰。分类如图:




具体策略如下:


(1)volatile-ttl: 根据过期时间的先后进行删除,越早过期的越先被删除。


(2)volatile-rando: 在设置了过期时间的键值对中,进行随机删除。


(3)volatile-lru: 使用 LRU 算法筛选设置了过期时间的键值对。


(4)volatile-lfu: 使用 LFU 算法选择设置了过期时间的键值对。


(5)allkeys-random: 从所有键值对中随机选择并删除数据。


(6)allkeys-lru: 使用 LRU 算法在所有数据中进行筛选。


(7)allkeys-lfu: 使用 LFU 算法在所有数据中进行筛选。