public class MasterSlave extends Object
This API allows connections to Redis Master/Slave setups which run either in a static Master/Slave setup or are managed by
Redis Sentinel. Master-Slave connections can discover topologies and select a source for read operations using
ReadFrom
.
Connections can be obtained by providing the RedisClient
, a RedisURI
and a RedisCodec
.
RedisClient client = RedisClient.create(); StatefulRedisMasterSlaveConnection<String, String> connection = MasterSlave.connect(client, RedisURI.create("redis://localhost"), StringCodec.UTF8); // ... connection.close(); client.shutdown();
Master-Slave topologies are either static or semi-static. Redis Standalone instances with attached slaves provide no
failover/HA mechanism. Redis Sentinel managed instances are controlled by Redis Sentinel and allow failover (which include
master promotion). The MasterSlave
API supports both mechanisms. The topology is provided by a
TopologyProvider
:
MasterSlaveTopologyProvider
: Dynamic topology lookup using the INFO REPLICATION
output. Slaves are listed
as slaveN=...
entries. The initial connection can either point to a master or a slave and the topology provider will
discover nodes. The connection needs to be re-established outside of lettuce in a case of Master/Slave failover or topology
changes.StaticMasterSlaveTopologyProvider
: Topology is defined by the list of URIs
and the ROLE
output. MasterSlave uses only the supplied nodes and won't discover additional nodes in the setup. The connection needs to be
re-established outside of lettuce in a case of Master/Slave failover or topology changes.SentinelTopologyProvider
: Dynamic topology lookup using the Redis Sentinel API. In particular,
SENTINEL MASTER
and SENTINEL SLAVES
output. Master/Slave failover is handled by lettuce.Topology Updates
Constructor and Description |
---|
MasterSlave() |
Modifier and Type | Method and Description |
---|---|
static <K,V> StatefulRedisMasterSlaveConnection<K,V> |
connect(RedisClient redisClient,
RedisCodec<K,V> codec,
Iterable<RedisURI> redisURIs)
|
static <K,V> StatefulRedisMasterSlaveConnection<K,V> |
connect(RedisClient redisClient,
RedisCodec<K,V> codec,
RedisURI redisURI)
|
public static <K,V> StatefulRedisMasterSlaveConnection<K,V> connect(RedisClient redisClient, RedisCodec<K,V> codec, RedisURI redisURI)
RedisURI
and the supplied
codec
to encode/decode keys.
This MasterSlave
performs auto-discovery of nodes using either Redis Sentinel or Master/Slave. A RedisURI
can point to either a master or a slave host.
K
- Key typeV
- Value typeredisClient
- the Redis clientcodec
- Use this codec to encode/decode keys and values, must not be nullredisURI
- the Redis server to connect to, must not be nullpublic static <K,V> StatefulRedisMasterSlaveConnection<K,V> connect(RedisClient redisClient, RedisCodec<K,V> codec, Iterable<RedisURI> redisURIs)
RedisURI
and the supplied
codec
to encode/decode keys.
This MasterSlave
performs auto-discovery of nodes if the URI is a Redis Sentinel URI. Master/Slave URIs will be
treated as static topology and no additional hosts are discovered in such case. Redis Standalone Master/Slave will
discover the roles of the supplied URIs
and issue commands to the appropriate node.
K
- Key typeV
- Value typeredisClient
- the Redis clientcodec
- Use this codec to encode/decode keys and values, must not be nullredisURIs
- the Redis server to connect to, must not be nullCopyright © 2018 lettuce.io. All rights reserved.