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.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 withsudo 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.
Are you new to docker? Check out this basic intro
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 abuild.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 arun.ps1
file containingdocker 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 correctlyNo 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.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 usememurai
in the future. I’m positive I’ll use Docker and so I’ll leave6379
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 correctlyNo 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.