Set up a Basic Leader/Follower Redis Cluster Locally using Docker
In general, you will want to keep your development environment and your higher environments as similar as makes sense [times it doesn't make sense: when it costs too much], to catch bugs early and often. Here, we'll quickly run through how to set up a leader/follower topology for redis using docker/docker-compose on your local machine.
The redis documentation on replication is a very good read to get more familiar with the details, but you basically just need to pass a flag/config value to the follower to tell it to start replicating. This will also, by default, make the replica reject all write requests [you want this--trust me]. Here's a docker-compose file that does just that:
version: '3.8' services: leader: image: redis ports: - "6379:6379" - 6379 networks: - local follower: image: redis ports: - "6380:6379" - 6379 networks: - local command: ["--replicaof", "leader", "6379"] networks: local: driver: bridge
You can, somewhat obviously, start this up like:
$ docker-compose up -d
We can then test this with the cli like so:
$ redis-cli set 3 "something" OK $ redis-cli -p 6380 set 3 "something" # fails because you're trying to write to the replica (error) READONLY You can't write against a read only replica. $ redis-cli -p 6380 get 3 # get from replica, same value "something"
If you're running a redis leader/follower topology in your staging/production environments or if you just want to experiment with how that might affect your application, this is probably the best place to start.
Nick Fisher is a software engineer in the Pacific Northwest. He focuses on building highly scalable and maintainable backend systems.