Question: How can you read from a replica in a Redis cluster?


In a Redis cluster, you can read from replicas (previously known as slaves) to distribute the read load and reduce pressure on the master. This is especially helpful when you have read-heavy applications.

To read from a replica, you need to use the READONLY command. This command modifies the state of the connection so that it is redirected to the closest replica, rather than the master.

However, please note that there's a possibility the data you're reading from the replica may be stale. This is because replication is asynchronous in Redis, meaning there can be a slight delay between when data is written to the master and when it's replicated to its replicas.

Here's an example of how to use the READONLY command:

import redis # Connect to your Redis cluster r = redis.Redis( host="localhost", port=6379, password=None ) # Enter READONLY mode r.execute_command("READONLY") # Now when you perform read commands, they will be directed to the nearest replica: value = r.get("my_key")

You can return to reading from the master by using the READWRITE command:


Note: The Python redis client has built-in support for executing arbitrary commands with execute_command(), which allows you to use commands like READONLY and READWRITE that aren't explicitly supported by the library.

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.