Redis配置中最大内存如何设置
导读:Redis 最大内存设置指南 一 配置方式与常用单位 配置文件方式:编辑 redis.conf,设置参数 maxmemory,例如:maxmemory 100mb 或 maxmemory 1gb。保存后需重启实例或在运行时用 CONFIG...
Redis 最大内存设置指南
一 配置方式与常用单位
- 配置文件方式:编辑 redis.conf,设置参数 maxmemory,例如:maxmemory 100mb 或 maxmemory 1gb。保存后需重启实例或在运行时用 CONFIG REWRITE 持久化到配置文件。
- 运行时方式:通过 redis-cli 执行 CONFIG SET,例如:CONFIG SET maxmemory 500mb。该方式立即生效,但重启后会丢失,建议随后写入配置文件以持久化。
- 单位写法:支持 B、KB、MB、GB(注意大小写语义差异:1K=1000 字节,1KB=1024 字节;1M=1000K,1MB=1024KB;1G=1000M,1GB=1024MB)。也可直接写字节数(如 536870912)。
- 特殊值:maxmemory 设为 0 表示不限制;在 64 位系统默认即为 0(不限制),在 32 位系统若未设置会被强制限制为约 3GB 并采用 noeviction 策略。
二 设置值的选取建议
- 生产环境建议将 maxmemory 设为服务器可用物理内存的约 75%,为操作系统、复制/持久化缓冲(复制积压缓冲区、AOF 写缓冲区等)预留空间,避免系统 OOM 或性能劣化。
- 若实例承担复制或开启 AOF,这些缓冲区的内存不计入 maxmemory 限制,需额外预留。
- 避免把 maxmemory 设置得过小导致频繁淘汰,或过大导致系统内存紧张。
三 与内存淘汰策略配合使用
- 达到 maxmemory 后,Redis 按 maxmemory-policy 进行键驱逐或拒绝写入。常用策略:
- noeviction:拒绝写入并返回错误(读仍可用)。
- allkeys-lru:对所有键使用 LRU 淘汰,适合通用缓存。
- volatile-lru:仅对已设置过期时间的键使用 LRU 淘汰。
- allkeys-random / volatile-random:随机淘汰。
- volatile-ttl:优先淘汰 TTL 最近将过期的键。
- 查看与设置策略:
- 查看:CONFIG GET maxmemory-policy
- 设置:CONFIG SET maxmemory-policy allkeys-lru(或 volatile-lru 等)
- 注意:使用仅作用于“有过期时间”的策略(如 volatile-lru / volatile-random / volatile-ttl)时,若没有可淘汰键,会回退为 noeviction。
四 验证与监控
- 验证设置是否生效:
- CONFIG GET maxmemory(返回字节数,如 536870912 表示 512MB)
- CONFIG GET maxmemory-policy(查看当前淘汰策略)
- 监控内存与驱逐情况:
- INFO memory(关注 used_memory_human / maxmemory_human / evicted_keys 等指标)
- 运行时动态变更 maxmemory 后,建议执行 CONFIG REWRITE 将变更写回配置文件,确保重启后仍然生效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Redis配置中最大内存如何设置
本文地址: https://pptw.com/jishu/764968.html
