优化Redis网络配置需兼顾性能、安全性与稳定性,以下是针对CentOS系统的具体技巧,涵盖配置调整、系统参数优化及安全措施:
通过bind
参数指定Redis监听的IP地址,默认值127.0.0.1
仅允许本地访问。若需远程访问,可设置为服务器IP(如bind 192.168.1.100
)或0.0.0.0
(允许所有IP,但需配合安全措施)。生产环境中建议绑定具体IP,避免暴露在公网。
tcp-backlog
参数定义等待连接的队列大小,默认值511。高并发场景下,增大该值(如tcp-backlog 1024
)可避免因队列满导致的连接拒绝。需同时调整系统参数net.core.somaxconn
(如net.core.somaxconn=1024
)以生效。
maxclients
参数限制Redis同时处理的客户端连接数,默认10000。根据应用需求调整(如maxclients 15000
),避免因连接数过多导致资源耗尽。需确保系统级限制(如ulimit -n
)不低于该值。
tcp-keepalive
参数设置TCP keepalive探测的时间间隔(秒),默认0(不启用)。启用后(如tcp-keepalive 60
)可定期检测死连接,释放无效资源,建议设置为300秒以上。
timeout
参数定义客户端空闲连接的超时时间(秒),默认0(永不关闭)。设置合理值(如timeout 300
)可清理闲置连接,减少资源浪费,建议根据业务场景调整(如300-3600秒)。
若环境无需IPv6,可通过ipv6 only=off
(或在/etc/sysctl.conf
中设置net.ipv6.conf.all.disable_ipv6=1
)禁用IPv6,减少网络协议栈的开销。
调整/etc/sysctl.conf
中的参数提升网络性能:
net.ipv4.tcp_rmem
:设置TCP接收缓冲区大小(如4096 87380 16777216
);net.ipv4.tcp_wmem
:设置TCP发送缓冲区大小(如4096 65536 16777216
);net.ipv4.tcp_max_syn_backlog
:增大SYN队列大小(如1024
);net.ipv4.tcp_fin_timeout
:缩短FIN_WAIT2状态的超时时间(如30
秒)。sysctl -p
使配置生效。requirepass
参数设置访问Redis的强密码(如requirepass YourStrongPassword123
),防止未授权访问。生产环境中必须启用,并定期更换密码。
使用firewall-cmd
命令仅允许必要IP访问Redis端口(默认6379):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="6379" accept' sudo firewall-cmd --reload
避免开放所有IP访问,提升安全性。
在客户端(如Java、Python)中使用连接池(如Jedis Pool、Redis-py Pool),复用连接而非频繁创建/销毁,降低网络延迟和资源消耗。
根据业务需求选择RDB(快照)或AOF(追加日志)持久化策略:
save
参数设置快照频率(如save 900 1
表示900秒内至少1次修改则触发);appendonly yes
,并通过appendfsync everysec
平衡性能与数据完整性(每秒同步一次)。使用Redis自带的INFO
命令(如INFO stats
、INFO clients
)或第三方工具(如Prometheus+Grafana)监控以下指标:
connected_clients
);latency
);instantaneous_ops_per_sec
)。以上技巧需根据实际业务场景调整,生产环境中务必优先考虑安全性(如绑定IP、设置密码、限制防火墙访问),再优化性能。修改配置后需重启Redis服务(sudo systemctl restart redis
)使更改生效。