Introducing Dragonfly Cloud! Learn More

Question: What are the requirements for setting up a Redis Cluster?

Answer

To set up a Redis Cluster, you need to consider several key factors. Here they are:

  1. Node Configuration: A Redis Cluster requires at least three master nodes for a minimal level of high availability. You can increase the number depending on your specific needs.

  2. Memory Requirement: Each node in the cluster will require enough memory to store its subset of the total dataset, plus some additional memory for maintaining operation overhead (like handling connections and background tasks).

  3. Network Requirement: All nodes should be able to communicate with each other on TCP ports 6379 (for client connections) and 16379 (for server-to-server communication). Every node should be reachable by every other node and by the client applications.

  4. Disk Space: The nodes should have enough disk space not only for storing the data but also for persistence options like RDB or AOF if required. Make sure to allocate space for backups as well.

  5. Redis Version: Redis Cluster functionality is available from Redis version 3.0 onwards. So, make sure all the machines run this version or higher.

Here's an example of how a Redis Cluster with 3 master nodes and 3 slave nodes can be setup using redis-cli:

# Start the Redis servers $ redis-server --port 7000 --cluster-enabled yes --cluster-config-file nodes-7000.conf --cluster-node-timeout 5000 --appendonly yes $ redis-server --port 7001 --cluster-enabled yes --cluster-config-file nodes-7001.conf --cluster-node-timeout 5000 --appendonly yes $ redis-server --port 7002 --cluster-enabled yes --cluster-config-file nodes-7002.conf --cluster-node-timeout 5000 --appendonly yes $ redis-server --port 7003 --cluster-enabled yes --cluster-config-file nodes-7003.conf --cluster-node-timeout 5000 --appendonly yes $ redis-server --port 7004 --cluster-enabled yes --cluster-config-file nodes-7004.conf --cluster-node-timeout 5000 --appendonly yes $ redis-server --port 7005 --cluster-enabled yes --cluster-config-file nodes-7005.conf --cluster-node-timeout 5000 --appendonly yes # Set up the cluster using redis-cli $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

In this example, we have created a Redis Cluster with 6 nodes (3 master and 3 slave nodes) where each node is running on a different port of the same machine. For a production setup, these nodes would typically be distributed across different machines.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today 

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.