Redis 6.2.6 生产情况单机配置详解redis.conf

打印 上一主题 下一主题

主题 1582|帖子 1582|积分 4746

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

Redis 生产情况配置详解

在实际生产情况中,为了保障 Redis 的稳定性和高性能,我们往往须要对默认配置进行一系列优化。本篇博文将以一份颠末优化的 Redis 配置文件为例,从基础网络设置、恒久化、复制、内存管理、AOF 恒久化、性能调优以及监控限制等多个方面进行详细讲解。
下面给出的是一份示例配置文件,并附上详细注释说明:

配置文件示例

  1. #####################
  2. # Redis 配置优化文件
  3. # 适用于生产环境
  4. #####################
  5. # 绑定地址,允许所有 IP 访问,生产环境建议改为内网 IP
  6. bind 192.168.1.1
  7. # 保护模式,建议开启 (yes) 以增强安全性
  8. protected-mode yes
  9. # 监听端口
  10. port 6379
  11. # TCP 连接队列大小
  12. tcp-backlog 511
  13. # 连接超时时间(0 代表不超时)
  14. timeout 0
  15. # TCP 保活时间(秒),建议设大一些,避免连接被防火墙误断开
  16. tcp-keepalive 300
  17. # 后台运行
  18. daemonize yes
  19. # 进程 PID 文件路径
  20. pidfile /data/redis/redis_6379.pid
  21. # 日志级别 (debug | verbose | notice | warning)
  22. loglevel notice
  23. # 日志文件路径(空值表示输出到标准输出)
  24. logfile "/data/app/redis/logs/redis-server.log"
  25. # 数据库数量(默认16个,视业务需求调整)
  26. databases 16
  27. # 显示 Redis 启动 Logo(关闭可减少日志干扰)
  28. always-show-logo no
复制代码

基础网络与进程管理



  • bind 与 protected-mode
    配置文件中指定了 bind 192.168.1.1,仅答应该 IP 访问 Redis 服务。对于生产情况,建议使用内网 IP 限制访问范围。同时开启 protected-mode(保护模式),可以防止未经授权的访问。
  • 端口与毗连设置
    使用 port 6379 设定 Redis 监听端口,tcp-backlog 则设定了毗连队列的长度。timeout 0 表示不自动断开空闲毗连,而 tcp-keepalive 300 保持长毗连的活性,制止中间设备(如防火墙)因空闲超时断开毗连。
  • 背景运行与日志记录
    通过 daemonize yes 使 Redis 背景运行,同时定义了 PID 文件路径(pidfile)以及日志文件路径和日志级别。这些设置有助于管理进程和题目排查。

RDB 恒久化配置

Redis 提供 RDB 恒久化方式,可以定时保存内存数据到磁盘。配置文件中针对 RDB 做了如下优化:
  1. #####################
  2. # RDB 持久化
  3. #####################
  4. # RDB 失败时阻止写入,避免数据损坏
  5. stop-writes-on-bgsave-error yes
  6. # 启用 RDB 数据压缩
  7. rdbcompression yes
  8. # 启用 RDB 数据校验
  9. rdbchecksum yes
  10. # RDB 文件名
  11. dbfilename dump.rdb
  12. # 关闭 RDB 删除同步文件,防止误删除
  13. rdb-del-sync-files no
  14. # RDB 文件存储目录,建议设为 SSD 盘
  15. dir /data/app/redis/data/
复制代码


  • 数据完整性保护
    使用 stop-writes-on-bgsave-error yes,一旦 RDB 恒久化出现错误,则制止写入操纵,防止数据不划一。
  • 数据压缩和校验
    开启 rdbcompression 和 rdbchecksum 可有用减小 RDB 文件体积,并通过校验保证数据完整性。
  • 文件存储目录
    将 RDB 文件存储在 /data/app/redis/data/,建议部署在 SSD 上以获得更高的 I/O 性能。

复制(主从同步)设置

在高可用架构中,主从复制是常用本领。配置文件中针对复制功能作了如下设置:
  1. #####################
  2. # 复制(主从同步)
  3. #####################
  4. # 允许副本在断开主库时仍然提供只读服务
  5. replica-serve-stale-data yes
  6. # 副本节点只读模式
  7. replica-read-only yes
  8. # 关闭无磁盘同步(默认使用磁盘同步)
  9. repl-diskless-sync no
  10. # 无磁盘同步的延迟
  11. repl-diskless-sync-delay 5
  12. # 关闭无磁盘加载
  13. repl-diskless-load disabled
  14. # 保持默认 TCP nodelay 配置
  15. repl-disable-tcp-nodelay no
  16. # 副本优先级(越小越容易成为主库)
  17. replica-priority 100
复制代码


  • 副本服务可用性
    replica-serve-stale-data yes 答应当副本与主库断开时继续提供只读服务,保证业务不停止。
  • 同步方式
    默认接纳磁盘同步,通过调整 repl-diskless-sync-delay 来控制延迟,保持数据传输的稳定性。
  • 选主策略
    配置 replica-priority,数值越低的副本在主库故障时更容易被推举为新的主库。

内存管理

内存管理是 Redis 性能的核心部分,配置文件中提供了灵活的内存管理策略:
  1. #####################
  2. # 内存管理
  3. #####################
  4. # 默认不限制内存,可根据业务需求调整
  5. maxmemory 0
  6. # 不驱逐数据,可改为 allkeys-lru
  7. maxmemory-policy noeviction
  8. # 关闭惰性删除,避免额外 CPU 开销
  9. lazyfree-lazy-eviction no
  10. # 关闭惰性过期
  11. lazyfree-lazy-expire no
  12. # 关闭惰性删除
  13. lazyfree-lazy-server-del no
  14. # 关闭副本惰性清理
  15. replica-lazy-flush no
  16. # 关闭 OOM 调整
  17. oom-score-adj no
  18. # 仅在 OOM 保护时启用
  19. oom-score-adj-values 0 200 800
复制代码


  • 内存限制与策略
    maxmemory 0 表示默认无穷制内存,实用于内存资源充足的情况;同时设置 maxmemory-policy noeviction,表示在内存到达上限时不驱逐数据。实际生产中,可以根据业务需求选用如 allkeys-lru 等驱逐策略。
  • 惰性删除
    关闭各种惰性删除功能(lazyfree-* 配置)可以淘汰 CPU 额外开销,不外大概会使删除操纵较为同步执行,需根据业务场景衡量。

AOF 恒久化

AOF(Append Only File)是 Redis 的另一种恒久化方案,能提供更高的数据安全性。配置文件中对 AOF 进行如下设置:
  1. #####################
  2. # AOF 持久化
  3. #####################
  4. # 启用 AOF 持久化
  5. appendonly yes
  6. # AOF 文件名
  7. appendfilename "appendonly.aof"
  8. # 每秒同步一次,性能和安全的折中方案
  9. appendfsync everysec
  10. # 重写时是否关闭同步
  11. no-appendfsync-on-rewrite no
  12. # 触发 AOF 重写的比例
  13. auto-aof-rewrite-percentage 100
  14. # 触发 AOF 重写的最小大小
  15. auto-aof-rewrite-min-size 64mb
  16. # 允许加载截断的 AOF
  17. aof-load-truncated yes
  18. # AOF 兼容 RDB 头部,减少重启时间
  19. aof-use-rdb-preamble yes
复制代码


  • 数据安全与性能
    开启 appendonly yes 并使用 appendfsync everysec,在数据安全和性能之间取得均衡;每秒同步一次 AOF 文件可以大幅低落数据丢失风险。
  • 自动重写
    配置 auto-aof-rewrite-percentage 和 auto-aof-rewrite-min-size,确保 AOF 文件不会无穷制增大,同时使用增量重写淘汰重写期间的性能损耗。
  • 兼容性与规复
    启用 aof-use-rdb-preamble 可以在重启时使用 RDB 头部数据加速加载速度,提拔规复效率。

性能优化设置

为了在高并发情况中获得更好的相应速度,Redis 在配置文件中还做了一系列性能调优:
  1. #####################
  2. # 性能优化
  3. #####################
  4. # 调高 Hz 频率,提高响应速度
  5. hz 50
  6. # 动态调整 Hz
  7. dynamic-hz yes
  8. # AOF 重写时增量同步
  9. aof-rewrite-incremental-fsync yes
  10. # RDB 保存时增量同步
  11. rdb-save-incremental-fsync yes
  12. # 启用 jemalloc 线程优化内存管理
  13. jemalloc-bg-thread yes
复制代码


  • Hz 频率
    默认的事件处理频率(hz)被调高到 50 次/秒,并启用动态调整,确保在负载波动时依然能够快速相应客户端请求。
  • 增量同步
    针对 AOF 重写和 RDB 保存启用增量同步,能有用淘汰磁盘 I/O 的压力,进步团体性能。
  • 内存分配优化
    启用 jemalloc 的背景线程(jemalloc-bg-thread yes)进一步优化内存分配和开释,实用于高并发场景。

限制与监控

为了实时发现题目并防止意外情况发生,Redis 提供了一系列监控和限制设置:
  1. #####################
  2. # 限制与监控
  3. #####################
  4. # 慢查询阈值(微秒)
  5. slowlog-log-slower-than 10000
  6. # 慢查询日志最大条数
  7. slowlog-max-len 128
  8. # 关闭延迟监控
  9. latency-monitor-threshold 0
  10. # 关闭 key 事件通知
  11. notify-keyspace-events ""
  12. # 普通客户端无限制
  13. client-output-buffer-limit normal 0 0 0
  14. # 副本节点限制
  15. client-output-buffer-limit replica 256mb 64mb 60
  16. # PubSub 限制
  17. client-output-buffer-limit pubsub 32mb 8mb 60
复制代码


  • 慢查询日志
    通过设置 slowlog-log-slower-than 10000(单元为微秒)来记录执行时间超过 10 毫秒的下令,有助于定位性能瓶颈。
  • 客户端输出缓冲区
    分别对普通客户端、复制节点和 PubSub 模块设定了缓冲区巨细限制,防止非常情况(如客户端壅闭)导致内存暴涨。

其他参数

最后,配置文件中还定义了一些额外参数,例如 RDB 保存条件和 TCP 相关参数,以进一步细化 Redis 的举动:
  1. #####################
  2. # 其他参数
  3. #####################
  4. # RDB 触发条件
  5. save 900 1 300 10 60 10000
  6. # TCP 连接队列大小
  7. tcp-backlog 511
  8. # TCP 保活时间(秒)
  9. tcp-keepalive 300
复制代码
这些参数能根据详细业务场景对数据保存频率、网络毗连队列等进行微调,从而到达性能和可靠性之间的均衡。

完整配置

  1. #########################################
  2. # Redis 配置优化文件
  3. # 适用于生产环境
  4. #########################################
  5. # 绑定地址,允许所有 IP 访问,生产环境建议改为内网 IP
  6. bind 192.168.1.1
  7. # 保护模式,建议开启 (yes) 以增强安全性
  8. protected-mode yes
  9. # 监听端口
  10. port 6379
  11. # TCP 连接队列大小
  12. tcp-backlog 511
  13. # 连接超时时间(0 代表不超时)
  14. timeout 0
  15. # TCP 保活时间(秒),建议设大一些,避免连接被防火墙误断开
  16. tcp-keepalive 300
  17. # 后台运行
  18. daemonize yes
  19. # 进程 PID 文件路径
  20. pidfile /data/app/redis/redis_6379.pid
  21. # 日志级别 (debug | verbose | notice | warning)
  22. loglevel notice
  23. # 日志文件路径(空值表示输出到标准输出)
  24. logfile "/data/redis/logs/redis-server.log"
  25. # 数据库数量(默认16个,视业务需求调整)
  26. databases 16
  27. # 显示 Redis 启动 Logo(关闭可减少日志干扰)
  28. always-show-logo no
  29. #########################################
  30. # RDB 持久化
  31. #########################################
  32. # RDB 失败时阻止写入,避免数据损坏
  33. stop-writes-on-bgsave-error yes
  34. # 启用 RDB 数据压缩
  35. rdbcompression yes
  36. # 启用 RDB 数据校验
  37. rdbchecksum yes
  38. # RDB 文件名
  39. dbfilename dump.rdb
  40. # 关闭 RDB 删除同步文件,防止误删除
  41. rdb-del-sync-files no
  42. # RDB 文件存储目录,建议设为 SSD 盘
  43. dir /data/app/redis/data/
  44. #########################################
  45. # 复制(主从同步)
  46. #########################################
  47. # 允许副本在断开主库时仍然提供只读服务
  48. replica-serve-stale-data yes
  49. # 副本节点只读模式
  50. replica-read-only yes
  51. # 关闭无磁盘同步(默认使用磁盘同步)
  52. repl-diskless-sync no
  53. # 无磁盘同步的延迟
  54. repl-diskless-sync-delay 5
  55. # 关闭无磁盘加载
  56. repl-diskless-load disabled
  57. # 保持默认 TCP nodelay 配置
  58. repl-disable-tcp-nodelay no
  59. # 副本优先级(越小越容易成为主库)
  60. replica-priority 100
  61. #########################################
  62. # 内存管理
  63. #########################################
  64. # 默认不限制内存,可根据业务需求调整
  65. maxmemory 0
  66. # 不驱逐数据,可改为 allkeys-lru
  67. maxmemory-policy noeviction
  68. # 关闭惰性删除,避免额外 CPU 开销
  69. lazyfree-lazy-eviction no
  70. # 关闭惰性过期
  71. lazyfree-lazy-expire no
  72. # 关闭惰性删除
  73. lazyfree-lazy-server-del no
  74. # 关闭副本惰性清理
  75. replica-lazy-flush no
  76. # 关闭 OOM 调整
  77. oom-score-adj no
  78. # 仅在 OOM 保护时启用
  79. oom-score-adj-values 0 200 800
  80. #########################################
  81. # AOF 持久化
  82. #########################################
  83. # 启用 AOF 持久化
  84. appendonly yes
  85. # AOF 文件名
  86. appendfilename "appendonly.aof"
  87. # 每秒同步一次,性能和安全的折中方案
  88. appendfsync everysec
  89. # 重写时是否关闭同步
  90. no-appendfsync-on-rewrite no
  91. # 触发 AOF 重写的比例
  92. auto-aof-rewrite-percentage 100
  93. # 触发 AOF 重写的最小大小
  94. auto-aof-rewrite-min-size 64mb
  95. # 允许加载截断的 AOF
  96. aof-load-truncated yes
  97. # AOF 兼容 RDB 头部,减少重启时间
  98. aof-use-rdb-preamble yes
  99. #########################################
  100. # 性能优化
  101. #########################################
  102. # 调高 Hz 频率,提高响应速度
  103. hz 50
  104. # 动态调整 Hz
  105. dynamic-hz yes
  106. # AOF 重写时增量同步
  107. aof-rewrite-incremental-fsync yes
  108. # RDB 保存时增量同步
  109. rdb-save-incremental-fsync yes
  110. # 启用 jemalloc 线程优化内存管理
  111. jemalloc-bg-thread yes
  112. #########################################
  113. # 限制与监控
  114. #########################################
  115. # 慢查询阈值(微秒)
  116. slowlog-log-slower-than 10000
  117. # 慢查询日志最大条数
  118. slowlog-max-len 128
  119. # 关闭延迟监控
  120. latency-monitor-threshold 0
  121. # 关闭 key 事件通知
  122. notify-keyspace-events ""
  123. # 普通客户端无限制
  124. client-output-buffer-limit normal 0 0 0
  125. # 副本节点限制
  126. client-output-buffer-limit replica 256mb 64mb 60
  127. # PubSub 限制
  128. client-output-buffer-limit pubsub 32mb 8mb 60
  129. #########################################
  130. # 其他参数
  131. #########################################
  132. # RDB 触发条件
  133. save 900 1 300 10 60 10000
  134. # TCP 连接队列大小
  135. tcp-backlog 511
  136. # TCP 保活时间(秒)
  137. tcp-keepalive 300
复制代码
总结

本篇博文详细解析了一份针对生产情况优化后的 Redis 配置文件。通过公道设置网络参数、恒久化策略、复制机制、内存管理和性能调优,Redis 能够在高并发和大数据量场景下保持稳定高效运行。
实际部署时,应根据自身的硬件条件和业务特点对各项参数进行适当调整。对于情况安全、数据可靠性和性能优化等方面,建议参考官方文档和社区最佳实践,不断完善和调优配置。
希望这篇解析能帮助你更好地明白 Redis 配置文件的各项参数,并在生产情况中构建一个更加稳定高效的 Redis 服务体系!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表