目录
定期删除+惰性删除
定期删除是指Redis默认每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。假设Redis里放了10w个key,都设置了过期时间,每隔几百毫秒,检查一次10w个key,cpu负载会很高的,影响性能,所以随机抽取。定期删除可能会导致很多过期key到了时间并没有被删除掉。就走惰性删除,就是在使用的时候获取某个key时,检查一下设置了过期时间的key是否过期,如果过期就删除,没过期就返回数据。
如果定期删除漏掉了很多过期key,也没走惰性删除,大量过期key堆积在内存里,导致Redis内存耗尽,怎么办,用内存淘汰机制。
内存淘汰机制
Redis内存淘汰机制有以下几个:
noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错。
allkeys-lru:当内存不足以容纳新写入数据时,移除最近最少使用的key,这个比较常用。
allkeys-random:当内存不足以容纳新写入数据时,随机移除某个key。
volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间键空间中,移除最近最少使用的key。
volatile-random:当内存不足以容纳新写入数据时&#x