NoSQL之Redis配置与优化

张开发
2026/4/18 6:24:19 15 分钟阅读

分享文章

NoSQL之Redis配置与优化
一、Redis 核心配置文件redis.conf关键参数Redis 配置文件是优化的核心先掌握必改 / 必配置的核心参数1. 基础运行配置ini# 后台运行生产环境必须开启 daemonize yes # PID文件路径 pidfile /var/run/redis_6379.pid # 监听端口 port 6379 # 监听地址生产环境不要设为0.0.0.0限制IP访问 bind 127.0.0.1 192.168.1.100 # 日志级别生产用notice调试用verbose loglevel notice # 日志文件路径 logfile /var/log/redis/redis.log # 数据库数量默认16个生产一般用1-3个 databases 162. 安全配置生产环境必备ini# 设置密码强烈建议开启 requirepass 你的强密码 # 禁止危险命令防止误删/攻击 rename-command CONFIG rename-command FLUSHDB rename-command FLUSHALL rename-command KEYS # 客户端超时时间空闲自动断开 timeout 3003. 客户端连接配置ini# 最大客户端连接数生产根据服务器配置调整 maxclients 10000 # TCP队列长度高并发场景调大 tcp-backlog 511二、Redis 内存优化最核心优化点Redis 是内存数据库内存管理直接决定服务稳定性。1. 最大内存配置ini# 限制Redis最大使用内存不要超过物理内存的50% # 例8G服务器 → maxmemory 4G maxmemory 4GB2. 内存淘汰策略关键当内存达到上限时Redis 会按照策略删除数据生产环境必须配置ini# 推荐策略仅淘汰设置了过期时间的key缓存场景最优 maxmemory-policy allkeys-lru # 其他策略说明 # volatile-lru → 只淘汰过期key # allkeys-lru → 淘汰所有key最常用 # volatile-random → 随机淘汰过期key # noeviction → 不淘汰直接报错默认生产禁用3. 内存碎片优化ini# 开启内存碎片整理Redis 4.0 activedefrag yes # 触发整理阈值碎片率20%开始整理 active-defrag-threshold-lower 20三、Redis 持久化优化数据安全 性能平衡Redis 提供RDB 快照和AOF 日志两种持久化方式生产推荐混合持久化。1. RDB 配置快照快丢数据多ini# 自动备份规则满足任意条件触发 save 900 1 # 900秒1次修改 save 300 10 # 300秒10次修改 save 60 10000 # 60秒10000次修改 # 备份失败停止写入 stop-writes-on-bgsave-error yes # 压缩RDB文件 rdbcompression yes2. AOF 配置日志安全性能略低ini# 开启AOF持久化 appendonly yes # AOF文件名 appendfilename appendonly.aof # 刷盘策略生产推荐everysec # always → 每次写入都刷盘最安全最慢 # everysec → 每秒刷盘平衡安全和性能 # no → 操作系统自动刷盘最快最不安全 appendfsync everysec # AOF重写配置自动缩小文件体积 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb3. 混合持久化Redis 4.0最优方案ini# 开启RDBAOF混合持久化 aof-use-rdb-preamble yes四、Redis 高性能优化提升 QPS / 降低延迟1. 网络优化ini# 关闭TCP_NODELAY降低网络延迟 tcp-nodelay yes # 开启SO_REUSEADDR快速重启 tcp-reuse-port yes2. 线程 / IO 优化Redis 6.0ini# 开启多线程IORedis 6.0提升读写性能 io-threads-do-reads yes # 线程数CPU核心数4核CPU设为4 io-threads 43. 禁用无用功能ini# 关闭数据库通知节省CPU notify-keyspace-events # 关闭超时检测无过期key时开启 lazyfree-lazy-eviction yes lazyfree-lazy-expire yes五、Redis 集群优化分布式高可用1. 主从复制优化ini# 从节点只读禁止写入 slave-read-only yes # 复制缓冲区大小大集群调大 repl-backlog-size 64mb # 无磁盘复制大内存服务器开启 repl-diskless-sync yes2. Redis Cluster 集群配置ini# 开启集群模式 cluster-enabled yes # 集群节点配置文件 cluster-config-file nodes-6379.conf # 节点超时时间 cluster-node-timeout 15000 # 允许 slots 覆盖扩容用 cluster-allow-replica-migration yes六、生产环境最佳实践方案1. 单机 Redis缓存场景内存物理内存的 50%淘汰策略allkeys-lru持久化AOFRDB混合appendfsync everysec密码 禁用危险命令2. 主从 Redis高可用主节点关闭持久化提升性能从节点开启持久化保证数据备份搭配Sentinel 哨兵实现自动故障切换3. Redis Cluster 集群分布式至少 3 主 6 从 节点节点内存不超过 10GB / 节点避免大 Key、热 Key七、Redis 禁止 / 规避的坑禁止存储大 KeyValue 10KB 会导致网络阻塞、集群倾斜禁止使用 KEYS 命令会阻塞 Redis 主线程禁止设置无过期时间的缓存导致内存溢出禁止单实例内存过大超过 10GB 建议拆分集群禁止公网直接暴露 Redis 端口必须加密码 防火墙限制 IP八、一键优化配置模板生产可直接用inidaemonize yes bind 127.0.0.1 port 6379 requirepass Redis123456 timeout 300 maxclients 10000 maxmemory 4GB maxmemory-policy allkeys-lru activedefrag yes appendonly yes appendfsync everysec aof-use-rdb-preamble yes save 900 1 save 300 10 save 60 10000 io-threads 4 io-threads-do-reads yes tcp-nodelay yes rename-command CONFIG rename-command FLUSHDB rename-command FLUSHALL rename-command KEYS 总结配置核心安全密码 禁用危险命令 内存限制 淘汰策略 持久化混合模式优化核心内存管理、多线程 IO、避免大 Key / 热 Key架构核心单机做缓存主从 哨兵做高可用Cluster 做分布式扩容

更多文章