Ubuntu Redis配置常见误区及规避方法
默认情况下,Redis仅允许本地连接(bind 127.0.0.1),且开启保护模式(protected-mode yes),这会阻止远程客户端访问。若需远程访问,需修改配置文件(/etc/redis/redis.conf):
bind指令(如bind 0.0.0.0允许所有IP,或指定具体IP);protected-mode no)。Redis默认无密码认证(requirepass未设置),任何人都能连接并操作数据。为提升安全性,需在配置文件中设置强密码:
# requirepass foobared,取消注释并替换为自定义密码(如requirepass YourStrongPassword123)。-a参数输入密码(如redis-cli -h <服务器IP> -p 6379 -a YourStrongPassword123)。未设置maxmemory参数会导致Redis无限制占用内存,可能引发系统OOM(Out of Memory)崩溃。需根据服务器内存大小设置合理的上限(如maxmemory 2gb),并选择合适的内存淘汰策略(如maxmemory-policy allkeys-lru,当内存满时淘汰最近最少使用的键)。
Redis是内存数据库,默认未开启持久化(save和appendonly均未设置),重启后数据会丢失。需根据需求配置持久化:
save指令设置触发条件(如save 900 1表示900秒内至少1个键被修改则保存);appendonly yes,并设置日志文件名(appendfilename "appendonly.aof")。Redis进程需要对配置文件(/etc/redis/redis.conf)有读取权限,否则无法启动。需确保配置文件的权限和所有权正确:
sudo chmod 644 /etc/redis/redis.conf(允许所有用户读取,但仅所有者写入);sudo chown redis:redis /etc/redis/redis.conf(将文件所有者设为redis用户)。Redis默认使用6379端口,若该端口被其他服务(如MySQL、Nginx)占用,会导致启动失败。需检查端口占用情况:
sudo netstat -tuln | grep 6379,若端口被占用,可选择终止占用进程(kill -9 <PID>)或修改Redis端口(port 6380)。sudo ufw allow 6379,并重载防火墙(sudo ufw reload)。配置文件中的语法错误(如多余空格、不合法参数、注释格式错误)会导致Redis无法启动。需仔细检查配置文件,确保:
bind 127.0.0.1而非bind 127.0.0.1 extra_text);#开头(如# This is a comment);maxmemory需带单位,如2gb而非2)。redis-server /path/to/redis.conf --test-config命令测试配置文件语法。修改配置文件后,需重启Redis服务使更改生效。常用命令:
sudo systemctl restart redis-server(重启服务);sudo systemctl reload redis-server(重载配置,无需重启)。