Fix Redis that will not start

We'll check systemctl status redis, journalctl, redis-cli ping, config and permissions—or tell you when to escalate.

Category
Troubleshooting · Servers & Linux
Time
10–25 min
Last reviewed
What you'll need
  • SSH or console access with sudo
  • Redis installed (redis-server package)

Step-by-step diagnostic

Step 1 of 7
Show full guide

Steps

Goal: Confirm Redis fails to start, read the error, then fix config, permissions, or port—or escalate.

  • Run systemctl status redis to see the current state.
  • Good: You see failed, inactive, or active. Proceed to Check status and logs.
  • Bad: Service not found—check if your distro uses redis-server as the unit name.

Check status and logs

Goal: See why Redis failed to start.

  • Run systemctl status redis. Note the Active line and the error message.
  • Run journalctl -u redis -n 50 --no-pager. Look for Permission denied, Address already in use, or config errors.
  • Good: You see the error. Proceed to Check redis-cli ping if active, or Fix config or permissions if failed.
  • Bad: Logs empty—check the unit file with systemctl cat redis.

Check redis-cli ping

Goal: Confirm Redis responds when the service reports active.

  • Run redis-cli ping. When Redis is healthy, it returns PONG.
  • If it times out or refuses, the service may have started but crashed. Check journalctl.
  • Good: PONG—Redis is running and accepting connections.
  • Bad: No response—Redis is not listening or crashed. Proceed to Fix config or permissions.

Fix config or permissions

Goal: Fix redis.conf paths and permissions.

  • Check dir and logfile in redis.conf. The redis-cli user (usually redis) must own or have write access to the data directory and log file.
  • Run sudo chown redis:redis /var/lib/redis and the log file path. Create the log dir if missing.
  • If the log says “Address already in use”, run ss -tlnp | grep 6379 to find the conflicting process. Stop it or change the port in redis.conf.
  • Run sudo systemctl daemon-reload and sudo systemctl restart redis.
  • Good: Redis starts and redis-cli ping returns PONG.
  • Bad: Still fails—check memory, config syntax, or escalate.

When to escalate

Escalate if:

  • Redis is managed by Puppet, Ansible, or Chef.
  • The fix requires cluster or sentinel changes.
  • You cannot safely modify redis.conf.

Provide systemctl status redis, journalctl -u redis output, and redis.conf.

Verification

  • systemctl status redis shows active (running).
  • redis-cli ping returns PONG.
  • No errors in journalctl -u redis -n 20.

Escalation ladder

Work from the device outward. Stop when the problem is fixed.

  1. Status and logs systemctl status redis; journalctl -u redis -n 50.
  2. redis-cli ping Confirm Redis responds when service is active.
  3. Config and permissions Check redis.conf; chown data dir and log file.
  4. Port conflicts ss -tlnp | grep 6379; stop conflicting process or change port.
  5. Escalate Provide status, journalctl, redis.conf.

What to capture if you need help

Before calling support or posting for help, have these ready. It speeds everything up.

  • systemctl status redis output
  • journalctl -u redis output
  • redis.conf (relevant sections)
  • Steps already tried

What does systemctl status redis show?

Run systemctl status redis. Note the Active line and any error.

Run `systemctl status redis`. Failed or inactive: read the status output and proceed to journalctl. Active: run `redis-cli ping` to confirm Redis responds. Good: you see the state. Bad: service not found—check if redis-server is the unit name on your distro.

You can change your answer later.

Does redis-cli ping return PONG?

When the service is active, test connectivity.

Run `redis-cli ping`. PONG: Redis is running and accepting connections. Timeout or refused: Redis may have crashed or is not listening—check journalctl. Good: PONG. Bad: no response—proceed to check logs.

You can change your answer later.

What does journalctl show?

Read the last 50 lines of Redis logs.

Run `journalctl -u redis -n 50`. Permission denied: fix chown on data dir and log file. Address already in use: check port with ss -tlnp | grep 6379. Config error: fix redis.conf. Other: check dir, logfile, and memory. Good: you see the error. Bad: logs empty—check systemctl cat redis for unit file.

You can change your answer later.

Check redis.conf

Read /etc/redis/redis.conf. Check dir, logfile, bind, port. Confirm redis user can write dir and log file. Run redis-server /path/to/redis.conf --test-memory 1 to test. Fix and restart.

Apply fix

Permission: chown redis:redis on data dir and log file. Port: stop conflicting process or change port in redis.conf. Config: fix syntax or path errors. systemctl daemon-reload; systemctl restart redis.

You can change your answer later.

Redis is running

Redis is active and redis-cli ping returns PONG. No further action needed.

Escalate

Provide systemctl status redis, journalctl -u redis output, and redis.conf. Escalate if config management or cluster changes are needed.

Reviewed by Blackbox Atlas

Frequently asked questions

Why would Redis not start?
Config error in redis.conf, permission denied on data dir or log file, port already in use, or insufficient memory. Check systemctl status and journalctl first.
Can I fix Redis that will not start myself?
Yes. Read journalctl for the error, fix redis.conf (bind, dir, logfile), check permissions with chown, and reload with systemctl restart redis.
When should I escalate Redis start failures?
If Redis is managed by config management, the fix requires cluster or sentinel changes, or you cannot safely modify the config.

Rate this guide

Was this helpful?

Thanks for your feedback.

Continue to