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内存达到最大值时,会触发内存淘汰策略。Redis提供了四种算法:随机移除、TTL最早过期、LRU(最近最少使用)和LFU(最不经常使用)。LRU维护一个16个元素的候选池,每次选取访问间隔最大的key淘汰。LFU在LRU基础上考虑了访问频率,避免误判热点key。
7007

被折叠的 条评论
为什么被折叠?



