Ubuntu Redis配置常见问题及解答
systemctl start redis启动时,日志报错“Failed listening on port 6379 (tcp), aborting”或服务状态显示“exit-code”。ss -ltnp | grep 6379或lsof -i :6379 -sTCP:LISTEN定位占用进程,用kill -9 <PID>终止进程;若需更换端口,修改/etc/redis/redis.conf中的port项(如port 6380),并重启Redis。redis-server绑定低位端口权限(sudo setcap 'cap_net_bind_service=+ep' /usr/bin/redis-server);② 改用高位端口(如6380),并更新systemd服务文件中的port配置(若有)。grep -E "^(port|bind|dir|daemonize)" /etc/redis/redis.conf检查关键配置项,删除重复的port或bind行;通过redis-server /etc/redis/redis.conf --test-config测试配置文件语法。bind 127.0.0.1仅允许本地访问。修改/etc/redis/redis.conf中的bind项为0.0.0.0(允许所有IP访问)或特定IP(如bind 192.168.1.100),并重启Redis。protected-mode yes禁止远程访问。修改protected-mode no,或在protected-mode yes时设置密码(requirepass your_password)。sudo ufw allow 6379/tcp开放端口,或替换为自定义端口(如6380)。/etc/redis/redis.conf中设置maxmemory(如maxmemory 2gb),限制Redis使用的最大内存。maxmemory-policy(如allkeys-lru,淘汰最近最少使用的键;volatile-lru,仅淘汰设置了过期时间的键),根据业务需求选择。/etc/redis/redis.conf:① RDB配置(快照):save 900 1(900秒内至少1个键修改则保存)、save 300 10(300秒内至少10个键修改)、save 60 10000(60秒内至少10000个键修改);dbfilename dump.rdb(RDB文件名);dir /var/lib/redis(保存目录);② AOF配置(日志):appendonly yes(开启AOF);appendfilename "appendonly.aof"(AOF文件名);appendfsync everysec(每秒同步一次,平衡性能与数据安全)。dump.rdb或appendonly.aof文件(如使用rsync或scp复制到远程服务器)。/var/lib/redis),或连接时报错“NOAUTH Authentication required”(未认证)。/var/lib/redis):sudo chown -R redis:redis /var/lib/redis(所有者为redis用户)、sudo chmod -R 755 /var/lib/redis(读写执行权限)。/etc/redis/redis.conf中的requirepass项(如requirepass your_password),重启Redis后,客户端连接时需使用auth your_password认证。/var/run/redis_6379.pid文件未删除,导致下次启动时报错“Can’t open PID file”。手动删除残留文件:sudo rm -f /var/run/redis_*.pid,并重启Redis。/etc/redis/redis.conf,若修改了路径,需确保systemd服务文件(/etc/systemd/system/redis.service)中的ExecStart项指向正确路径(如ExecStart=/usr/bin/redis-server /etc/redis/redis.conf)。sudo systemctl daemon-reload使配置生效,再重启Redis。