本文主要是介绍==Redis淘汰策略(内存满了触发)==,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
好的,面试官。这个问题我需要从三个方面来回答。第一个方面:
当 Redis 使用的内存达到 maxmemory 参数配置的阈值的时候,Redis 就会根据配置的内存淘汰策略。
把访问频率不高的 key 从内存中移除。maxmemory 默认情况是当前服务器的最大内存。第二个方面:
Redis 默认提供了 8 种缓存淘汰策略,这 8 种缓存淘汰策略总的来说,我认为可以归类成五种
第一种, 采用 LRU 策略,就是把不经常使用的 key 淘汰掉。
第二种,采用 LFU 策略,它在 LRU 算法上做了优化,增加了数据访问次数,从而确保淘汰的是非热点 key。
第三种,随机策略,也就是是随机删除一些 key。
第四种,ttl 策略,从设置了过期时间的 key 里面,挑选出过期时间最近的 key进行优先淘汰
第五种,当内存不够的时候,直接报错,这是默认的策略。
这些策略可以在 redis.conf 文件中手动配置和修改,我们可以根据缓存的类型和缓存使用的场景来选择合适的淘汰策略。
最后一个方面,我们在使用缓存的时候,建议是增加这些缓存的过期时间。因为我们知道这些缓存大概的生命周期,从而更好的利用内存。
以上就是我对这个问题的理解。
这篇关于==Redis淘汰策略(内存满了触发)==的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!