缓存淘汰策略:
背景:
当Redis内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换(swap),导致Redis的性能急剧下降,造成redis服务的不可用。
为了限制最大使用内存,Redis提供了配置参数maxmemory来限制内存的最大使用容量。
当实际内存超出maxmemory时,redis根据不同的缓存淘汰策略(maxmemory-policy)来对内存进行回收。
缓存淘汰策略:
永不回收策略(默认):保证已有的数据不丢失。
noeviction # 所有的key都不会被删除,此时redis不处理写请求,但是读请求、DEL请求依然会处理。这样可以保证数据不丢失,是默认的淘汰策略。
volatile策略:只会对带过期时间的key进行淘汰。
volatile-lru # 尝试淘汰设置了过期时间的key,最少使用的key优先被淘汰。
volatile-ttl # 尝试淘汰设置了过期时间的key,key的剩余寿命的值ttl越小越优先被淘汰。
volatile-random # 尝试淘汰设置了过期时间的key,key随机选择。
allkeys策略:对所有的 key 进行淘汰
allkeys-lru # 最少使用的key优先被淘汰。
allkeys-random # 随机淘汰所有的key。