redis数据淘汰策略

redis数据淘汰策略一 什么是数据淘汰当新数据进入 redis 之前 会调用 freeMemoryIf 检测内存是否充足 如果内存不满足加入数据的最低要求 redis 就会临时删除一些数据来存储新的数据 清理数据的策略称为逐出算法逐出数据的过程不是 100 能够清理出可使用的空间 若不成功则反复执行 当所有数据都尝试完毕后仍达不到要求则会出现错误信息 error OOMcommandno gt maxmemory 二 相关配置 1 maxmem

一、什么是数据淘汰

当新数据进入redis之前,会调用freeMemoryIfNeeded()检测内存是否充足。如果内存不满足加入数据的最低要求,redis就会临时删除一些数据来存储新的数据。

清理数据的策略称为逐出算法

逐出数据的过程不是100%能够清理出可使用的空间,若不成功则反复执行。当所有数据都尝试完毕后仍达不到要求则会出现错误信息

(error)OOM command not allowed when used memory>’maxmemory’

二、相关配置

1.maxmemory ?mb

最大可使用内存,默认0表示不限制,生产通常为物理内存的50%以上

2.maxmemory-samples count

每次选取待删除数据的个数,采用随机获取数据的方式作为待检测删除数据

3.maxmemory-policy policy

对数据进行删除的选择策略

检测易失数据(可能会过期的数据集server.db[i].expires)

①volatile-lru:挑选最近最少使用的数据进行淘汰

②volatile-lfu:挑选最近使用次数最少的数据进行淘汰

③volatile-ttl:挑选将要过期的数据进行淘汰

④volatile-random:任意选择数据进行淘汰

检测全库数据(所有数据集server.db[i].dict)

①allkeys-lru:挑选最近最少使用的数据进行淘汰

②allkeys-lfu:挑选最近使用次数最少的数据进行淘汰

③allkeys-random:任意选择数据进行淘汰

放弃数据驱逐

①no-enviction:禁止驱逐数据(redis4.0中默认策略),会引发错误OOM

三、数据淘汰策略配置依据

使用INFO命令输出监控信息,查询缓存keyspace_hits和keyspace_misses的次数,根据业务需求调优redis配置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177106.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:18
下一篇 2026年3月26日 下午8:18


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号