上车上车,快速搞懂 Redis 过期策略和内存淘汰策略
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
上🚕,上🚕
快速搞懂 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 的,添加的时候直接报错。
🍚总结
以上是关于两个策略的总结,希望有所帮助。
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/45622b8f9e51d3225ab448ce3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论