错误描述:客户端尝试连接Redis服务器时,出现“Connection refused”错误。
解决方法:
systemctl status redis
查看服务状态,若未启动则执行systemctl start redis
。redis.conf
配置:确保bind
参数设置为允许客户端访问的IP(如0.0.0.0
允许所有IP,或指定具体IP);若启用了protected-mode
(默认开启),需设置强密码(requirepass yourpassword
)或关闭保护模式(protected-mode no
,仅测试环境使用)。错误描述:Redis报错“OOM command not allowed when used memory exceeds ‘maxmemory’”,表示内存使用超过限制。
解决方法:
redis.conf
中的maxmemory
参数(如maxmemory 4gb
),限制Redis最大内存使用;修改后需重启服务或通过CONFIG SET maxmemory 4gb
动态生效。maxmemory-policy
参数(如allkeys-lru
淘汰最近最少使用的所有键,volatile-lru
淘汰设置了过期时间的最近最少使用键),避免内存满时无法写入。EXPIRE key seconds
为临时数据设置过期时间,定期清理无用键(DEL key
或SCAN
+DEL
批量删除);优先使用Hash等高效数据结构替代String(如用HSET
存储对象属性)。错误描述:Redis无法启动或运行异常,提示“Invalid argument”“Syntax error”等配置错误。
解决方法:
redis-cli config test
命令验证redis.conf
的语法正确性,若有错误会提示具体行号。bind
(监听IP)、port
(端口)、daemonize
(后台模式,设为yes
)、logfile
(日志路径,需可写)等参数符合需求。/var/log/redis/redis.log
),获取详细的错误信息(如配置项冲突、路径不存在)。错误描述:执行systemctl start redis
后,服务无法启动,无日志输出或提示“Failed to start”。
解决方法:
journalctl -xe
或cat /var/log/redis/redis.log
查看具体错误(如端口冲突、权限不足、依赖缺失)。netstat -tuln | grep 6379
或lsof -i:6379
检查端口是否被其他进程占用,若有则终止占用进程(kill -9 PID
)。/usr/local/redis
)、数据目录(/var/lib/redis
)、日志文件有读写权限(chown -R redis:redis /var/lib/redis
,chmod -R 770 /var/lib/redis
)。错误描述:Redis执行命令耗时过长,影响性能(如查询响应时间超过100ms)。
解决方法:
redis.conf
中设置slowlog-log-slower-than
(慢查询阈值,单位微秒,默认10ms)和slowlog-max-len
(日志长度,如slowlog-log-slower-than 10000
表示超过10ms的查询);使用SLOWLOG GET
命令查看慢查询记录(如redis-cli SLOWLOG GET 10
查看最近10条)。HGETALL
替代多次GET
)、拆分大Key(如将大Hash拆分为多个小Hash)。CONFIG SET latency-monitor-threshold 100
设置延迟阈值(单位毫秒),通过LATENCY LATEST
查看延迟事件。错误描述:从节点无法同步主节点数据,报错“READONLY You can’t write against a read only replica”或“Sync with master failed”。
解决方法:
ping 主节点IP
,telnet 主节点IP 6379
)。redis.conf
中设置replicaof 主节点IP 端口
(如replicaof 192.168.1.100 6379
),或通过命令redis-cli replicaof 主节点IP 端口
动态设置;若需从节点可写(不推荐生产环境),设置replica-read-only no
。requirepass
(设置密码),从节点需配置masterauth 主节点密码
(认证密码)。错误描述:编译Redis源码时提示“gcc: command not found”或“version `GLIBCXX_3.4.xx’ not found”。
解决方法:
sudo yum install centos-release-scl
添加SCL仓库,然后安装devtoolset(如sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++
),通过scl enable devtoolset-9 bash
激活新环境(临时生效);或修改~/.bashrc
添加scl enable devtoolset-9 bash
(永久生效)。sudo yum install -y tcl jemalloc
,确保编译所需的依赖库已安装。错误描述:允许远程连接Redis,但未采取安全措施,存在密码泄露、未授权访问风险。
解决方法:
redis.conf
中取消requirepass
注释,设置复杂密码(如包含大小写字母、数字、特殊字符,长度≥12位)。firewall-cmd --permanent --add-port=6379/tcp
开放Redis端口,firewall-cmd --reload
生效;或通过iptables限制访问IP(如iptables -A INPUT -p tcp -s 客户端IP --dport 6379 -j ACCEPT
)。tls-port
配置,加密客户端与服务器之间的通信(需生成证书并配置tls-cert-file
、tls-key-file
等参数)。