Upgrading Redis with zero downtime

This tutorial explains, upgrading Redis With Zero Downtime


Let Suppose a Scenario where we have a Redis Server (Version:  Redis-4.0.9) running on a Server with Redis Port 6388 and we want upgrading Redis to the latest version( 5.0.8) without any downtime.Current location of existing installed Redis is /usr/local/bin/redis-server

Also Read : Install Redis on Linux from source

 && How to install Jenkins on AWS EC2



We will follow the following steps upgrading Redis Server without downtime.

 1) Install the latest version(5.0.8) of Redis from source on the Same Server with a different installation location(/opt/local) without doing any changes on existing Redis Server.

 2) Configure a different Redis Port 6399  on the newly Installed latest-Version Redis Server.

3) Make the existing old version- 4.0.9 Redis-Server as Master and newly installed Latest-Version-5.0.8 Redis Server as a slave.

4)Verify the Master-Slave setup

5) Promote the SLAVE as Master.

6) Verify the new Master Server

7) Change the Redis Port on your Application.


Let us perform the above steps in detail:

Step 1-Install the latest version(5.0.8) of Redis from source

Step 1.1– Open the following Redis download link on the browser.



Right click on the Download 5.0.8 under Stable(5.0)  version or whatever the latest stable version and click on “copy link location

Step 1.2–  Download the latest Redis version copied in previous step  on your Linux Box using wget command.

 $ cd ~

 $    wget http://download.redis.io/releases/redis-5.0.8.tar.gz

$    tar -xvf redis-5.0.8.tar.gz

 $    cd redis-5.0.8/

$  make

Step 1.3– If you get any error in running make command ,run the following command.

For Centos

 $ sudo yum groupinstall ‘Development Tools’

$ sudo yum install gcc make

For Ubuntu

$ sudo apt-get install build-essential

$ sudo apt install gcc make

Step 1.4 – Run make Install with a different location. Here I put /opt/local .

$ make PREFIX=/opt/local install

Step 2- Configure a different Redis Port 6399  on the newly  Redis Server.

$ cd ~/redis-5.0.8/utils/

Run following script to configure redis.

$ ./install_server.sh

As soon as you run the script the following prompts will appear.


Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 6399            —-> Enter port as 6399
Please select the redis config file name [/etc/redis/6399.conf]                             ————>  Press Enter
Selected default – /etc/redis/6399.conf                                                                            ————>  Press Enter
Please select the redis log file name [/var/log/redis_6399.log]                             ———— > Press Enter
Selected default – /var/log/redis_6399.log                                                                    ————>  Press Enter
Please select the data directory for this instance [/var/lib/redis/6399]              ————>  Press Enter
Selected default – /var/lib/redis/6399                                                                               ————>  Press Enter
Please select the redis executable path [/opt/local/bin/redis-server]                 ————>  Press Enter
Selected config:
Port : 6399
Config file : /etc/redis/6399.conf
Log file : /var/log/redis_6399.log
Data dir : /var/lib/redis/6399
Executable : /opt/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6399.conf => /etc/init.d/redis_6399
Installing service…
Starting Redis server…
Installation successful!

Start redis Service

$ sudo service redis_6399 start


$/etc/init.d/redis_6399 start

$ sudo service redis_6399 status


$ /etc/init.d/redis_6399 status

Step 3  – Create Master-Slave Setup

Master Configuration

Open the Redis config file of existing Redis Server that we have to make as Master

$ vi /etc/redis/6388.conf

Look for the string ‘bind’ and make sure it should be as  :


Also look for the sting ‘appendonly’ and ‘appendfilename’ and change the setting as :

appendonly yes

appendfilename “appendonly.aof​”

save your configuration and exit.

Slave Configuration

Open the newly installed redis config file.

$ vi /etc/redis/6399.conf

Look for the string ‘bind’ and make sure it should be as  :


Add the following line in the 6399.conf file and save the file.


After saving restart the Slave Redis Server.

$/etc/init.d/redis_6399 restart

Step 4-  Verify the Master-Slave setup

To check if master and slave setup is working properly. Connect and run following command on Master and Slave Redis one by one.

On Master Redis

Connect the redis using following command and run command info

$/usr/local/bin/redis-cli -p 6388>  info

Scroll down to Replication portion of Info and you can see the role as master.

# Replication

Now Create a test key value  on MASTER to check if data is Replicating to SLAVE.>  set test “testing”

Now to check the key value on master run ‘get test’>  get test


On SLAVE Redis

Connect the SLAVE Redis using following command and run command info

$/usr/local/bin/redis-cli -p 6399>  info

Scroll down to Replication portion of Info and you can see the role as slave.

# Replication

Here some points that we need to notice are as follows:

master_link_status  should be up
master_last_io_seconds_ago  should greater than or equal to 1
master_sync_in_progress should be 0

Now check the key created on Master is replicated to SLAVE or not by running command ‘get test’>  get test


The above result shows that Key value is replicated to SLAVE.

Step 5–  Promote the SLAVE as Master.

Connect to the SLAVE SERVER and run the following command.

$/usr/local/bin/redis-cli -p 6399>  SLAVEOF NO ONE


Now run info command to check if SLAVE promoted as Master.>  info

# Replication

Here you can see in replication section that the role is changed to MASTER.

Step 6- Verify the new Master Server

Connect your New master and check if you are able to create key.

$/usr/local/bin/redis-cli -p 6399>  set test1 “testing”

OK>  get test1


The above results show that you are able to create key now as the New Redis server is promoted as master. If you are still not able to create a test key on master, mean you are still in read-only mode(SLAVE MODE), in that case try to restart the Redis service of new MASTER(6399) and try again.

Step 7- Change the Redis Port on your Application.

Change the Redis Port no from 6388 to 6399 in your Application or ask your Developer to do the same.

I hope you enjoyed this tutorial and learned Upgrading Redis with zero downtime . If you think this is really helpful, please do refer my blog posts to others as well. Also, please give your valuable feedback in the comment box.I will always happy to help resolve your queries anytime.

Thank You

If you think we helped you or just want to support us, please consider these:-

Connect to us: Facebook | Twitter

You may also like…

3 Responses

  1. fori says:

    Hi, thanks for writing this! I’m curious why do we need to set the previous master as append-only? Did you put that to ease sync between slave-master? Or is there any other reason?

  2. fori says:

    Can you help to point me to a resource which supports this argument? I’m having trouble to find doc explaining relation of master-slave sync with append-only mode

Leave a Reply

Your email address will not be published. Required fields are marked *