过期策略
过期策略:定期删除+惰性删除
定期删除:redis每隔100ms会从设置了过期时间的key里,随机抽取一部分key查看是否已经过期,如果过期就删除。
惰性删除:redis在使用某个key时,先检查key是否已经过期,如果过期就删除
内存淘汰机制
tips:具体使用哪一个看自己的业务场景
noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了。- allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key(这个是最常用的)。
- allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key
- volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key
- volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。
- volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。
Redis4.0新增两种淘汰策略
volatile-lfu:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,删除被访问频次低的key
allkeys-lfu:当内存不足以容纳新数据时,在所有键空间里,移除访问频次低的key
过期策略的修改使用
在redis的配置文件redis.conf文件中,我们可以配置具体使用哪种过期策略