共计 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 网 – 提供最优质的资源集合!