Redis的内存淘汰策略是指:当redis的使用率已经达到了Maxmemory 的上限的时候,就会触发内存释放的一个行为。
Redis提供4种内存淘汰算法:
1. 随机移除某个key(random算法)
2. TTL算法 在设置了过期时间的key里,找到更早过期的key移除
3. LRU算法,移除使用频率低的key
4. LFU算法 和LRU算法类似(redis4新增加)
LRU算法会在redis里面维护一个大小为16的候选池,根据时间排序,每一次随机抽出来5个key放到候选池中候选池满了,访问的时间间隔最大的key,就会被取出来淘汰掉。
若某个时间该key使用频繁,这样就会被误认为热点key,LFU增加了访问频率这个判断纬度,统计热点情况
Redis 过期键的删除策略?
定时删除:在设置键的过期时间的同时,创建一个定时器 timer。让定时器在键的过期时间来临时,立即执行对键的删除操作。
惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。
定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。