3. Install Redis

Redis is a very popular data store used across all kinds of web apps it’s supported natively by Mac and Linux operating systems. Heck, you can even use Docker to run Redis.

The purpose of this guide is to setup Redis so we can use in our Python applications including Django, Flask, Fastapi, Celery, and pure python apps.

Are you a windows user? Check out this redis install guide

Do you need to use Redis on Docker? The windows install guide shows you how.

3.1. Install Redis on macOS

3.1.1. Install Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

3.1.2. Install redis

brew install redis

Every once and a while run brew upgrade redis

3.1.3. Start / Stop Redis

brew services start redis

Starting redis this way turns redis into a background service. You can easily stop redis with:

brew services stop redis

3.1.4. Verify redis is running:

% redis-cli ping

What result do you see?

  • PONG – great, redis is working and ready.

  • Could not connect to Redis at 127.0.0.1:6379: Connection refused – this means that: (1) you did not install redis correctly or (2) redis is not running.

3.2. Install Redis on Linux (using Ubuntu)

Below was adapted from the production-ready guide in our series Hello Linux

3.2.1. Update System

sudo apt update

3.2.2. Install redis-server

sudo apt install redis-server

3.2.3. Update configuration

sudo nano /etc/redis/redis.conf

Update supervised to the following:

supervised systemd

Save and exit nano.

Restart running service:

sudo systemctl restart redis.service

3.2.4. Verify installation:

$ redis-cli ping

What result do you see?

  • PONG – great, redis is working and ready.

  • Could not connect to Redis at 127.0.0.1:6379: Connection refused – this means that: (1) you did not install redis correctly, (2) redis is not running, or (3) the system service did not start (check with sudo systemctl status redis)

3.3. Install on Windows 10 using Docker

Naturally, you need to install docker desktop on your windows 10. There’s a huge caveat that might push you towards using Memurai:

Docker requires you to have Windows 10 professional

Windows 10 professional allows for the OS virtualization that is just not provided in Windows 10 home.

3.3.1. Verify Docker

Open PowerShell and run:

> docker --version
Docker version 19.03.12, build 48a66213fe

3.3.2. Create a project directory

> cd Dev # or mkdir Dev
> mkdir docker-redis
> echo "" > DockerFile

3.3.3. Update (or create) a Dockerfile

FROM redis
CMD [ "redis-server"]

You don’t have to build the redis image yourself but I prefer to so I can make changes easily and it’s already prepared for it.

3.3.4. Build our docker image:

> docker build -t "cfe-redis" .

Personally, I like adding commands like docker build -t "cfe-redis" . to a build.ps1 file so I can just call ./build.ps1 if I ever want to build it again in the future.

3.3.5. Run our docker image:

> docker run -it --rm -p 6379:6379 "cfe-redis"

A couple things to note:

-it --rm is so this docker container only runs when we want it to and the container will be removed after we’re done running it.

-p 6379:6379 is exposing the port 6379 on our local system AND in our docker container.

cfe-redis is merely the tag name of the image we created in the build process.

Just like with build.ps1, make a run.ps1 file containing docker run -it --rm -p 6379:6379 "cfe-redis" as a shortcut to running this container.

3.3.6. Verify Docker connection

On Linux and Mac, you can just run redis-cli ping but, since we’re using docker, we don’t have the redis-cli command available on our system.

We need another way to test. Since I use redis in my Python projects, I’ll create a simple python program to ensure our non-container items can connect to redis.

I already have Python 3.8 installed. If you don’t, check out this guide.

3.3.6.1. Create virtual environment

> cd ~/Dev/docker-redis
> python -m venv .

You can use pipenv as well. I’m just keeping things simple by using the built-in virtual environment manager

3.3.6.2. Activate virtual environment

C:\> .\Scripts\Activate 
(docker-redis) C:\>

3.3.6.3. Run pip install redis

This command does not install the redis server; it just installs a redis connector that we can use in python.

(docker-redis) C:\> pip install redis 

3.3.6.4. Create ping_redis.py

#ping_redis.py

import redis
r = redis.Redis(host='localhost', port=6379, db=0)
setter = r.set('foo', 'bar')
getter = r.get('foo')

print(setter, getter)

Notice the port=6379 I used? This is the default redis port and it matches to what I exposed above.

3.3.6.5. Run ping_redis.py

(docker-redis) C:\> python ping_redis.py

What result do you have?

  • True b'bar' – this means redis is running correctly

  • No connection could be made because the target machine actively refused it. – this means your version of redis is either (1) not running or (2) running incorrectly or (3) you got the port number wrong.

3.3.7. Future running

Now, whenever you need to use redis in your projects. Just run:

docker run -it --rm -p 6379:6379 "cfe-redis"

Anywhere on your system.

3.4. Install Redis on Windows using Memurai.com

I haven’t used memurai much myself but it seems promising. Let’s see

3.4.1. Download Developer Edition here

3.4.2. Run downloaded installer

3.4.3. Agree to all defaults except port.

For the port, I’ll use 6380.

I’m leaving 6379 open. It’s the default redis port and I’m not 100% convinced I’ll use memurai in the future. I’m positive I’ll use Docker and so I’ll leave 6379 open for docker versions of redis like above.

3.4.4. Verify in Python – Create a virtual environment.

memurai should be running by default after you installed it so we need to verify.

Assuming you did not do the docker portion above, let’s create a new virtual environment to test redis is running via memurai. Open up PowerShell and run:

> mkdir Dev
> cd Dev
> mkdir memurai-redis
> cd memurai-redis

I already have Python 3.8 installed. If you don’t, check out this guide.

> python -m venv .

3.4.4.1. Activate virtual environment

C:\> .\Scripts\Activate 
(memurai-redis) C:\>

3.4.4.2. Run pip install redis

This command does not install the redis server; it just installs a redis connector that we can use in python.

(memurai-redis) C:\> pip install redis 

3.4.4.3. Create ping_redis.py

#ping_redis.py

import redis
r = redis.Redis(host='localhost', port=6380, db=0)
setter = r.set('foo', 'bar')
getter = r.get('foo')

print(setter, getter)

Notice the port=6380 I used? This is the redis port I used during the memurai installation.

3.4.4.4. Run ping_redis.py

(memurai-redis) C:\> python ping_redis.py

What result do you have?

  • True b'bar' – this means redis is running correctly

  • No connection could be made because the target machine actively refused it. – this means your version of redis is either (1) not running or (2) running incorrectly or (3) you got the port number wrong.

3.4.4.5. Future running

If you installed the defaults, memurai should start with your system startup just remember which port (6380) you used for the memurai redis.