首页主机资讯Redis在Ubuntu上的内存淘汰机制是什么

Redis在Ubuntu上的内存淘汰机制是什么

时间2026-01-21 17:38:05发布访客分类主机资讯浏览1209
导读:Redis 在 Ubuntu 的内存淘汰机制 核心机制与触发条件 Redis 通过配置项 maxmemory 设置实例可使用的最大内存上限;当已用内存达到该上限时,会根据 maxmemory-policy 执行键的淘汰(驱逐)。若策略为...

Redis 在 Ubuntu 的内存淘汰机制

核心机制与触发条件

  • Redis 通过配置项 maxmemory 设置实例可使用的最大内存上限;当已用内存达到该上限时,会根据 maxmemory-policy 执行键的淘汰(驱逐)。若策略为 noeviction,写命令(如 SET、LPUSH)将被拒绝,读命令仍可执行。LRU/LFU/TTL 等策略为近似算法,用于更高效地选择淘汰对象。需要注意:maxmemory 为 0 表示不限制内存(生产环境不建议)。在存在从节点(replica)的场景,用于复制的输出缓冲区会从已用内存中扣除,以避免因网络/重同步导致“驱逐→删除→更多驱逐”的连锁问题。

策略一览

策略 作用范围 含义与行为
volatile-lru 仅对已设置过期时间的键 近似 LRU,优先淘汰最近最少使用
allkeys-lru 全部键 近似 LRU,优先淘汰最近最少使用
volatile-lfu 仅对已设置过期时间的键 近似 LFU,优先淘汰使用频率最低
allkeys-lfu 全部键 近似 LFU,优先淘汰使用频率最低
volatile-random 仅对已设置过期时间的键 随机淘汰
allkeys-random 全部键 随机淘汰
volatile-ttl 仅对已设置过期时间的键 淘汰剩余 TTL 最短的键
noeviction 全部键 不淘汰,写操作返回错误
说明:Redis 4.0 起新增 LFU 系列策略;所有带 volatile-* 的策略仅在键设置了过期时间时才有候选对象可淘汰。

Ubuntu 下的默认配置与查看方式

  • 使用 deb 包在 Ubuntu 安装时,配置文件通常位于 /etc/redis/redis.conf。很多版本中 maxmemory 默认未设限(即 0,表示不限制),而 maxmemory-policy 的默认值在不同版本/发行包中可能不同,常见为 noevictionvolatile-lru。建议以实际配置文件为准。查看方式:
    • 查看最大内存:CONFIG GET maxmemory
    • 查看淘汰策略:CONFIG GET maxmemory-policy
    • 动态修改(无需重启):CONFIG SET maxmemory 4gb;CONFIG SET maxmemory-policy allkeys-lru 修改后若需持久化,请同步更新 /etc/redis/redis.conf 并重启服务(如使用 systemd:sudo systemctl restart redis-server)。

如何选择与落地建议

  • 纯缓存场景:优先使用 allkeys-lru(热点数据更可能保留)或 allkeys-lfu(更关注访问频次)。
  • 缓存与持久化混合:使用 volatile-lru / volatile-ttl / volatile-random,仅对需要过期的键设置 TTL,避免无谓内存占用。
  • 访问分布均匀:可选 allkeys-random,实现简单、开销稳定。
  • 强一致/不容错写入:选 noeviction,在达到上限时让写失败,由业务侧降级或扩容处理。
  • 运维提示:为 maxmemory 设置合理上限(结合业务与可用内存),并监控 evicted_keys 指标观察淘汰是否频繁;从节点存在时,适当留出内存给复制输出缓冲区,避免误触发连锁驱逐。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Redis在Ubuntu上的内存淘汰机制是什么
本文地址: https://pptw.com/jishu/788888.html
在Ubuntu上如何配置Redis超时时间 Ubuntu Redis的持久化策略有哪些

游客 回复需填写必要信息