插件窝 干货文章 Redis内存配置参数有哪些?

Redis内存配置参数有哪些?

内存 ziplist 淘汰 作用 1037    来源:    2025-03-28

Redis 的内存配置参数主要分为以下几类,以下是详细说明和关键参数:


1. 基础内存限制

  • maxmemory

    • 作用:设置 Redis 实例的最大内存容量(如 maxmemory 4gb)。
    • 注意:超出此限制时触发淘汰策略(需配合 maxmemory-policy)。
    • 默认值:无限制(可能导致 OOM)。
  • maxmemory-policy

    • 作用:定义内存满时的数据淘汰策略,可选值:
    • volatile-lru:对设置了过期时间的键使用 LRU 淘汰。
    • allkeys-lru:对所有键使用 LRU 淘汰(推荐)。
    • volatile-ttl:淘汰剩余存活时间最短的键。
    • volatile-random / allkeys-random:随机淘汰。
    • noeviction:不淘汰,返回错误(默认)。

2. 内存优化参数

  • hash-max-ziplist-entries / hash-max-ziplist-value

    • 作用:小哈希表使用 ziplist 编码的阈值(节省内存)。
    • 示例
    hash-max-ziplist-entries 512  # 哈希元素数 ≤512 时用 ziplist
    hash-max-ziplist-value 64     # 单个元素值 ≤64 字节时用 ziplist
    
  • 类似参数(其他数据结构):

    • list-max-ziplist-entries / list-max-ziplist-value
    • zset-max-ziplist-entries / zset-max-ziplist-value
    • set-max-intset-entries(整数集合优化)

3. 过期键处理

  • active-expire-effort(Redis 6.2+)
    • 作用:控制过期键清理的CPU占用(1-10,默认1)。
  • hz
    • 作用:后台任务执行频率(默认10,提高值会更快清理过期键但增加CPU开销)。

4. 内存碎片管理

  • activedefrag
    • 作用:是否启用自动内存碎片整理(yes/no)。
  • active-defrag-* 系列参数
    • 示例
      plaintext active-defrag-threshold-lower 10 # 内存碎片率≥10%时触发 active-defrag-cycle-min 5 # 最小CPU占用百分比 active-defrag-cycle-max 75 # 最大CPU占用百分比

5. 其他关键参数

  • client-output-buffer-limit

    • 作用:限制客户端输出缓冲区大小(防止慢客户端占用过多内存)。
    • 示例
    client-output-buffer-limit normal 0 0 0  # 普通客户端无限制
    client-output-buffer-limit slave 256mb 64mb 60  # 从库限制
    
  • replica-ignore-maxmemory

    • 作用:从库是否忽略 maxmemory(默认 yes,从库不淘汰数据)。

配置建议

  1. 生产环境必设 maxmemory:避免系统OOM。
  2. 选择合适淘汰策略:通常 allkeys-lruvolatile-lru
  3. 优化小数据结构:根据业务调整 *-ziplist-* 参数。
  4. 监控碎片率:若 mem_fragmentation_ratio > 1.5,考虑启用 activedefrag

通过合理配置这些参数,可以显著优化 Redis 的内存使用效率和稳定性。建议结合 INFO MEMORY 命令监控内存状态。