redis缓存策略有哪些

53次阅读
没有评论

共计 1250 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 redis 缓存策略有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

将 Redis 用作缓存时, 如果内存空间用满, 就会自动驱逐老的数据。默认情况下 memcached 就是这种方式, 大部分开发者都比较熟悉。LRU 是 Redis 唯一支持的回收算法.

驱逐策略

达到最大内存限制时 (maxmemory), Redis 根据 maxmemory-policy 配置的策略, 来决定具体的行为。

当前版本,Redis 3.0 支持的策略包括:

noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。大多数写命令都会导致占用更多的内存 (有极少数会例外, 如 DEL)。

allkeys-lru: 所有 key 通用; 优先删除最近最少使用 (less recently used ,LRU) 的 key。

volatile-lru: 只限于设置了 expire 的部分; 优先删除最近最少使用 (less recently used ,LRU) 的 key。

allkeys-random: 所有 key 通用; 随机删除一部分 key。

volatile-random: 只限于设置了 expire 的部分; 随机删除一部分 key。

volatile-ttl: 只限于设置了 expire 的部分; 优先删除剩余时间 (time to live,TTL) 短的 key。

如果没有设置 expire 的 key, 不满足先决条件 (prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致。

您需要根据系统的特征, 来选择合适的驱逐策略。当然, 在运行过程中也可以通过命令动态设置驱逐策略, 并通过 INFO 命令监控缓存的 miss 和 hit, 来进行调优。

一般来说:

如果分为热数据与冷数据, 推荐使用 allkeys-lru 策略。也就是, 其中一部分 key 经常被读写. 如果不确定具体的业务特征, 那么 allkeys-lru 是一个很好的选择。

如果需要循环读写所有的 key, 或者各个 key 的访问频率差不多, 可以使用 allkeys-random 策略, 即读写所有元素的概率差不多。

假如要让 Redis 根据 TTL 来筛选需要删除的 key, 请使用 volatile-ttl 策略。

volatile-lru 和 volatile-random 策略主要应用场景是: 既有缓存, 又有持久 key 的实例中。一般来说, 像这类场景, 应该使用两个单独的 Redis 实例。

值得一提的是, 设置 expire 会消耗额外的内存, 所以使用 allkeys-lru 策略, 可以更高效地利用内存, 因为这样就可以不再设置过期时间了。

以上是 redis 缓存策略有哪些的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计1250字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)