7月 17 15:10:36 localhost.localdomain systemd[1]: Failed to start Redis data store.
7月 17 15:10:36 localhost.localdomain systemd[1]: Unit redis.service entered failed state.
7月 17 15:10:36 localhost.localdomain systemd[1]: redis.service failed.
7月 17 15:10:36 localhost.localdomain systemd[1]: redis.service holdoff time over, scheduling restart.
7月 17 15:10:36 localhost.localdomain systemd[1]: Stopped Redis data store.
7月 17 15:10:36 localhost.localdomain systemd[1]: Starting Redis data store...
7月 17 15:10:36 localhost.localdomain systemd[1]: Can't open PID file /var/run/redis/redis_6379.pid (yet?) after start: No such file or directory
1. 彻底清理残留进程和文件
# 强制杀死所有 Redis 相关进程
sudo pkill -9 redis-server
sudo pkill -9 systemctl  # 清理卡住的 systemctl 进程

# 删除残留 PID 文件(兼容两种常见路径)
sudo rm -f /var/run/redis_6379.pid /var/run/redis/redis_6379.pid

# 清理 Redis 可能持有的文件锁(关键步骤!)
sudo rm -f /var/lib/redis/*.lock

2. 修复目录权限
# 创建 PID 文件目录并赋权
sudo mkdir -p /var/run/redis
sudo chown -R redis:redis /var/run/redis
sudo chmod 755 /var/run/redis

# 修复数据目录权限
sudo chown -R redis:redis /var/lib/redis

3. 修改 Redis 配置文件
编辑 /etc/redis/6379.conf:
# 确保以下关键配置正确
daemonize yes
pidfile /var/run/redis/redis_6379.pid  # 必须与 systemd 服务文件一致
timeout 300
supervised systemd  # 显式声明使用 systemd 管理

4. 重写 systemd 服务文件
创建 /etc/systemd/system/redis.service 内容如下:
[Unit]
Description=Redis data store
After=network.target

[Service]
Type=notify  # 使用 Type=notify 替代 forking 更可靠
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli shutdown
PIDFile=/var/run/redis/redis_6379.pid
TimeoutStartSec=300
TimeoutStopSec=30
RestartSec=5s
Restart=always

[Install]
WantedBy=multi-user.target
5. 应用配置并重启服务
# 重新加载 systemd
sudo systemctl daemon-reload

# 完全重置服务状态
sudo systemctl reset-failed redis

# 启动服务并验证
sudo systemctl start redis
sudo systemctl status redis

# 查看实时日志
journalctl -u redis -f

排查问题的最好方法就是根据日志来排查

更多推荐