Debian 上部署 Redis 的配置要点
一 基础网络与访问控制
- 绑定地址与端口:默认仅监听 127.0.0.1,远程访问应改为内网地址(如 bind 192.168.1.100),避免直接 bind 0.0.0.0 暴露公网;必要时修改 port(如 6380)降低被扫描概率。
- 保护模式:外网开放时务必保持 protected-mode yes,并同时设置强密码或启用 TLS/ACL;否则易被未授权访问利用。
- 防火墙与监听:用 ufw/iptables 限制来源 IP 与端口(如仅内网网段访问 6379/tcp);高并发场景调优 tcp-backlog(如 511),并确保内核 somaxconn 同步调高。
- 本地套接字:如仅本机访问,可启用 unixsocket /run/redis.sock 并设置 unixsocketperm 700,减少网络面。
二 安全加固与认证授权
- 强密码与 ACL:设置 requirepass yourStrongPassword;Redis 6.0+ 建议用 ACL 细粒度授权(如只读用户、写入用户)。
- 禁用或重命名危险命令:如 rename-command FLUSHALL “”、rename-command CONFIG “”,将 SHUTDOWN 重命名为不易猜测的名称。
- 加密传输:启用 TLS/SSL(配置 tls-port 6379、tls-cert-file、tls-key-file、tls-ca-cert-file),确保公网/跨机房链路数据加密。
- 系统账号与最小权限:以 redis 系统用户运行服务,避免使用 root;文件权限与目录属主仅授予必要访问。
三 持久化、内存与高可用
- 持久化策略:按需开启 RDB(如 save 900 1 / 300 10 / 60 10000)与/或 AOF;定期备份 dump.rdb/AOF 到异地。
- 内存与淘汰:设置 maxmemory(如 2gb)与 maxmemory-policy(如 allkeys-lru),防止 OOM 与性能劣化。
- 复制与高可用:主从复制时,从库配置 replicaof <master_ip> <master_port>,设置 masterauth <master_pass>;主库建议 replica-read-only yes;跨机房/公网链路优先 TLS。
- 监控与维护:启用 慢查询日志(如 slowlog-log-slower-than 5000、slowlog-max-len 128),结合 Prometheus + redis_exporter 监控;定期 BGREWRITEAOF、检查 AOF 完整性。
四 系统服务、升级与常见排错
- systemd 与 supervised:Debian 包通常自带 systemd 单元;如使用源码/自定义安装,可设置 supervised systemd 以便托管。
- 日志与目录:配置 logfile /var/log/redis/redis.log,确保 /var/log/redis 与 /var/lib/redis 目录属主为 redis:redis,权限合理。
- 升级与补丁:定期执行 apt update && apt upgrade redis-server,及时获取安全修复。
- 常见排错清单:
- 连不上:检查 bind 是否包含客户端网段、ufw/iptables 是否放行端口、密码是否正确;
- 性能差:检查 慢查询、maxmemory 与淘汰策略、是否存在 大 Key;
- AOF 异常:使用 redis-check-aof --fix 修复。
五 最小化配置示例
bind 192.168.1.100
port 6380
protected-mode yes
requirepass YourStrongPass!
tls-port 6379
tls-cert-file /etc/ssl/certs/redis.crt
tls-key-file /etc/ssl/private/redis.key
tls-ca-cert-file /etc/ssl/certs/ca.crt
acl setuser reader on >reader123 +@read +ping
acl setuser writer on >writer123 +@write +@read
save 900 1
save 300 10
save 60 10000
maxmemory 2gb
maxmemory-policy allkeys-lru
slowlog-log-slower-than 5000
slowlog-max-len 128
rename-command FLUSHALL ""
rename-command CONFIG ""
unixsocket /run/redis.sock
unixsocketperm 700
logfile /var/log/redis/redis.log
dir /var/lib/redis
提示:修改后执行 systemctl restart redis-server 生效,并用 redis-cli -h 192.168.1.100 -p 6380 -a YourStrongPass! ping 验证连通性与认证。