错误表现:启动Redis时提示“bad directive or wrong number of arguments”“FATAL CONFIG FILE ERROR”等,或redis-server --test-config报错。
常见原因:配置文件中存在无效指令、参数数量不匹配(如port 6379 bind 127.0.0.1中间缺少换行)、多余空白行或注释格式错误。
解决方法:
redis-server --syntax-check /path/to/redis.conf命令检查配置文件语法,定位错误行;port 6379而非port6379);redis-server /path/to/redis.conf --test-config。错误表现:Redis无法启动,日志提示“Address already in use”(地址已被使用),或netstat -tuln | grep 6379显示端口被占用。
常见原因:默认的6379端口被其他应用(如MySQL、Nginx)占用,或自定义端口未正确释放。
解决方法:
sudo lsof -i :6379,记录PID;sudo kill -9 <PID>;port参数为未被使用的端口(如6380),重启服务。错误表现:无法从远程客户端连接Redis,提示“Connection refused”或“Target machine refused connection”。
常见原因:配置文件中bind参数设置不当(如bind 127.0.0.1仅允许本地访问),或未注释默认的bind行。
解决方法:
/etc/redis/redis.conf,注释bind 127.0.0.1(添加#前缀);bind 0.0.0.0允许所有IP访问(生产环境建议限制为特定IP,如bind 192.168.1.100);sudo systemctl restart redis。错误表现:远程连接时提示“No password set”(未设置密码)或“invalid password”(密码错误)。
常见原因:protected-mode未关闭且未设置密码,或requirepass参数配置错误(如密码包含特殊字符未转义)。
解决方法:
protected-mode yes改为protected-mode no;# requirepass foobared的注释,修改为requirepass your_strong_password(密码需包含字母、数字和符号,长度≥8位);-a参数指定密码:redis-cli -h <服务器IP> -p 6379 -a your_password。错误表现:Redis无法启动,日志提示“Permission denied”(权限不足),或无法写入数据/日志文件。
常见原因:Redis进程对数据目录(如/var/lib/redis)或日志文件(如/var/log/redis/redis-server.log)无读写权限。
解决方法:
redis:sudo chown -R redis:redis /var/lib/redissudo chown -R redis:redis /var/log/redis;755(目录)和644(文件):sudo chmod -R 755 /var/lib/redissudo chmod 644 /var/log/redis/redis-server.log。错误表现:Redis运行时频繁崩溃,日志提示“Out of memory”(内存不足),或INFO memory显示used_memory接近maxmemory。
常见原因:未配置maxmemory参数,或配置的内存值小于实际数据量。
解决方法:
/etc/redis/redis.conf,添加maxmemory 2gb(根据服务器内存调整,如2GB);maxmemory-policy allkeys-lru(最近最少使用淘汰);错误表现:Redis无法启动,日志提示“avc: denied”(SELinux拒绝访问),或服务状态显示“failed”。
常见原因:SELinux处于“enforcing”模式,阻止Redis访问网络或文件。
解决方法:
sudo setenforce 0;/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive,重启系统;sudo semanage port -a -t redis_port_t -p tcp 6379(需安装policycoreutils-python-utils包)。错误表现:启动Redis时提示“Could not open configuration file”(无法打开配置文件),或redis-server无法找到配置文件。
常见原因:未指定配置文件路径,或配置文件不在默认位置(如/etc/redis/redis.conf)。
解决方法:
sudo redis-server /path/to/redis.conf;sudo find / -name redis.conf(如/usr/local/etc/redis.conf);cp /usr/local/src/redis/redis.conf /etc/redis/。错误表现:Redis启动后立即退出,日志提示“Cannot allocate memory”(无法分配内存),或dmesg显示OOM(Out of Memory) killer终止了进程。
常见原因:服务器内存或交换空间不足,无法满足Redis的内存需求。
解决方法:
sudo fallocate -l 2G /swapfile # 创建2GB交换文件
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # 永久生效
maxmemory值)。错误表现:修改配置文件后,修改未生效(如端口、密码变更)。
常见原因:未重载或重启Redis服务,导致旧配置仍在运行。
解决方法:
sudo redis-cli config reload;sudo systemctl restart redis;sudo service redis restart。