🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc
上🚕,上🚕
快速搞懂Redis 过期策略和内存淘汰策略
🎈Redis 过期策略
- 定时删除
对于redis中的键值对,对设置过期时间的的都创建一个定时器,当到达一定时间,删除对应的key,虽然这样redis能够删除多余的数据,但是会耗费大量的cpu时间。 - 定期删除:这个和定时删除是不同的,定期删除是隔一段时间去查看redis中的一个数据库中设置过期的key是否过期,过期的话,就可以删除,当删除的数量占有遍历的总量,则再次选取一部分数据进行过期检测,直到删除的key占有扫描额数据比例小于一定比例的时候停止。
- 惰性删除:这个指的是我们不主动删除,而是被动的删除,因为惰性删除指的是,在我们获取key的值的时候,查看是否过期,过期的话直接删除。
默认是使用定期删除和惰性删除结合。
🎈Redis内存淘汰策略
对于淘汰策略有以下八种方式;
在设置过期时间的key上
volatile-lru:在设置了过期时间的key上,找最近最少使用的key删除
volatile-lfu:在设置了过期时间的key上,找最少使用频率的key删除
volatile-ttl:在设置了过期时间的key上,找块要过期的key删除
volatile-random:在设置了过期时间的key上,随机选取key删除
在所有key上
allkeys-lru: 当内存不足的时候,在所有的key上,找最近最少使用的key删除
allkeys-lfu: 当内存不足的时候,在所有的key上,找最少频率使用的key删除
allkeys-random: 当内存不足的时候,在所有的key上,随机选取key删除
noeviction: 当内存不足的时候,不删除已有的key的,添加的时候直接报错。
🍚总结
以上是关于两个策略的总结,希望有所帮助。