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。