Redis 可以看作是一个内存数据库,通过 Maxmemory 指令配置 Redis 的数据集使用指定量的内存。设置 Maxmemory 为 0,则表示无限制。
当内存使用达到 Maxmemory 极限时,需要使用某种淘汰算法来决定清理掉哪些数据,以保证新数据的存入。
Redis 的缓存淘汰策略有:
noeviction:当内存使用达到上限,所有需要申请内存的命令都会异常报错。
allkeys-lru:先试图移除一部分最近未使用的 key。
volatile-lru:淘汰一部分最近使用较少的(LRC),但只限于过期设置键。
allkeys-random:随机淘汰某一个键。
volatile-random:淘汰任意键,但只限于有过期设置的驱逐键。
volatile-ttl:优先移除具有更早失效时间的 key。