Redis的淘汰策略有哪几种?
源码在这里:redis.conf 文件
volatile-ttl 策略,在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进行删除,越早过期的越先被删除。
volatile-random策略,在设置了过期时间的键值对中,进行随机删除。
volatile-lru 策略,会使用 LRU 算法筛选设置了过期时间的键值对。最近最少使用的会被删掉。
volatile-lfu 会使用 LFU 算法选择设置了过期时间的键值对。首先会筛选并淘汰访问次数少的数据,然后针对访问次数相同的数据,再筛选并淘汰访问时间最久远的数据。
allkeys-random 策略,从所有键值对中随机选择并删除数据。
allkeys-lru 策略,使用 LRU 算法在所有数据中进行筛选。
allkeys-lfu 策略,使用 LFU 算法在所有数据中进行筛选。
默认情况下,Redis 在使用的内存空间超过 maxmemory 值时,并不会淘汰数据,也就是设定的 noeviction 策略,写满后再写会返回错误。