How can I stop redis-server?

Viewed 669981

I apparently have a redis-server instance running because when I try to start a new server by entering redis-server, I'm greeted with the following:

Opening port: bind: Address already in use

I can't figure out how to stop this server and start a new one.

Is there any command I can append to redis-server when I'm typing in the CLI?

My OS is Ubuntu 10.04.

28 Answers

stop the redis server type in terminal with root user

sudo service redis-server stop

the message will be display after stop the redis-server

Stopping redis-server: redis-server.

if you want to start the redis-server type

sudo service redis-server start

if you want to restart the server type

sudo service redis-server restart

I would suggest to disable Redis-server, which prevents auto start while computer restarts and very useful to use docker like tools etc.

Step 1: Stop the redis-server

sudo service redis-server stop

Step 2: Disable the redis-server

sudo systemctl disable redis-server

if you need redis, you can start it as:

sudo service redis-server start

if you did make install (e.g ubuntu) while installing redis then you can do:

redis-cli shutdown

as pointed by @yojimbo87 :)

Following worked for me on MAC

 ps aux | grep 'redis-server' | awk '{print $2}' | xargs sudo kill -9

If you know on which port(default:6379) your redis server is running you can go with option 1 or you can check your redis process and you can kill with option 2

option 1:
Kill process on port:

check     : sudo lsof -t -i:6379
kill      : sudo kill `sudo lsof -t -i:6379`

option 2:
Find the previously Running Redis Server:

 ps auxx | grep redis-server

Kill the specific process by finding PID (Process ID) - Redis Sever

kill -9 PID

Now start your redis server with

redis-server /path/to/redis.conf 

If you are running redis in a docker container, none of the present answers will help. You have to stop redis container. Otherwise, redis process will keep respawning.

$ docker ps
CONTAINER ID        IMAGE                    PORTS                             
e1c008ab04a2        bitnami/redis:4.0.8-r0   0.0.0.0:6379->6379/tcp

$ docker stop e1c008ab04a2
e1c008ab04a2

The commands below works for me on Ubuntu Server

$ service /etc/init.d/redis_6379 stop
$ service /etc/init.d/redis_6379 start
$ service /etc/init.d/redis_6379 restart

Redis has configuration parameter pidfile (e.g. /etc/redis.conf - check redis source code), for example:

# If a pid file is specified, Redis writes it where specified at startup
# and removes it at exit.
#
# When the server runs non daemonized, no pid file is created if none is
# specified in the configuration. When the server is daemonized, the pid file
# is used even if not specified, defaulting to "/var/run/redis.pid".
#
pidfile /var/run/redis.pid

If it is set or could be set, instead of searching for process id (pid) by using ps + grep something like this could be used:

kill $(cat /var/run/redis.pid)

If required one can make redis stop script like this (adapted default redis 5.0 init.d script in redis source code):

PIDFILE=/var/run/redis.pid
if [ ! -f $PIDFILE ]
then
    echo "$PIDFILE does not exist, process is not running"
else
    PID=$(cat $PIDFILE)
    echo "Stopping ..."
    kill $PID
    while [ -x /proc/${PID} ]
    do
        echo "Waiting for Redis to shutdown ..."
        sleep 1
    done
    echo "Redis stopped"
fi

To stop redis server

sudo service redis-server stop

and check the status of it using

sudo service redis-server status

If Redis is installed via snap:

sudo snap stop redis.server

One thing to check if the redis commands are not working for you is if your redis-server.pid is actually being created. You specify the location of where this file is in

/etc/systemd/system/redis.service 

and it should have a section that looks something like this:

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
PIDFile=/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always

Check the location and permissions of the PIDFile directory (in my case, '/run/redis'). I was trying to restart the service logged in as deploy but the directory permissions were listed as

drwxrwsr-x  2 redis    redis      40 Jul 20 17:37 redis

If you need a refresher on linux permissions, check this out. But the problem was I was executing the restart as my deploy user which the permissions above are r-x, not allowing my user to write to the PIDFile directory.

Once I realized that, I logged in using root, reran the restart command on the redis (service redis restart) and everything worked. That was a headache but hopefully this saves someone a little time.

You can try this code:

sudo kill -9 $(ps aux | grep 'redis' | awk '{print $2}')
Related