public class StatefulRedisClusterConnectionImpl<K,V> extends RedisChannelHandler<K,V> implements StatefulRedisClusterConnection<K,V>
StatefulRedisClusterConnectionImpl
A ConnectionWatchdog
monitors each connection and reconnects automatically until RedisChannelHandler.close()
is called. All
pending commands will be (re)sent after successful reconnection.Modifier and Type | Field and Description |
---|---|
protected RedisAdvancedClusterAsyncCommandsImpl<K,V> |
async |
protected RedisCodec<K,V> |
codec |
protected RedisAdvancedClusterReactiveCommandsImpl<K,V> |
reactive |
protected RedisAdvancedClusterCommands<K,V> |
sync |
Constructor and Description |
---|
StatefulRedisClusterConnectionImpl(RedisChannelWriter writer,
RedisCodec<K,V> codec,
Duration timeout)
Initialize a new connection.
|
Modifier and Type | Method and Description |
---|---|
void |
activated()
Notification when the connection becomes active (connected).
|
RedisAdvancedClusterAsyncCommands<K,V> |
async()
Returns the
RedisAdvancedClusterAsyncCommands API for the current connection. |
Collection<RedisCommand<K,V,?>> |
dispatch(Collection<? extends RedisCommand<K,V,?>> commands)
Dispatch multiple command in a single write on the channel.
|
<T> RedisCommand<K,V,T> |
dispatch(RedisCommand<K,V,T> command)
Dispatch a command.
|
StatefulRedisConnection<K,V> |
getConnection(String nodeId)
Retrieve a connection to the specified cluster node using the nodeId.
|
StatefulRedisConnection<K,V> |
getConnection(String host,
int port)
Retrieve a connection to the specified cluster node using host and port.
|
CompletableFuture<StatefulRedisConnection<K,V>> |
getConnectionAsync(String nodeId)
Retrieve asynchronously a connection to the specified cluster node using the nodeId.
|
CompletableFuture<StatefulRedisConnection<K,V>> |
getConnectionAsync(String host,
int port)
Retrieve asynchronously a connection to the specified cluster node using host and port.
|
Partitions |
getPartitions() |
ReadFrom |
getReadFrom()
Gets the
ReadFrom setting for this connection. |
RedisAdvancedClusterReactiveCommands<K,V> |
reactive()
Returns the
RedisAdvancedClusterReactiveCommands API for the current connection. |
void |
setPartitions(Partitions partitions) |
void |
setReadFrom(ReadFrom readFrom)
Set from which nodes data is read.
|
RedisAdvancedClusterCommands<K,V> |
sync()
Returns the
RedisAdvancedClusterCommands API for the current connection. |
protected InvocationHandler |
syncInvocationHandler() |
addListener, close, closeAsync, deactivated, flushCommands, getChannelWriter, getOptions, getResources, getTimeout, isClosed, isOpen, registerCloseables, reset, setAutoFlushCommands, setOptions, setTimeout, setTimeout, syncHandler
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getChannelWriter
close, closeAsync, flushCommands, getOptions, getResources, getTimeout, isOpen, reset, setAutoFlushCommands, setTimeout, setTimeout
protected final RedisCodec<K,V> codec
protected final RedisAdvancedClusterCommands<K,V> sync
protected final RedisAdvancedClusterAsyncCommandsImpl<K,V> async
protected final RedisAdvancedClusterReactiveCommandsImpl<K,V> reactive
public StatefulRedisClusterConnectionImpl(RedisChannelWriter writer, RedisCodec<K,V> codec, Duration timeout)
writer
- the channel writercodec
- Codec used to encode/decode keys and values.timeout
- Maximum time to wait for a response.public RedisAdvancedClusterCommands<K,V> sync()
StatefulRedisClusterConnection
RedisAdvancedClusterCommands
API for the current connection. Does not create a new connection.sync
in interface StatefulRedisClusterConnection<K,V>
protected InvocationHandler syncInvocationHandler()
public RedisAdvancedClusterAsyncCommands<K,V> async()
StatefulRedisClusterConnection
RedisAdvancedClusterAsyncCommands
API for the current connection. Does not create a new connection.async
in interface StatefulRedisClusterConnection<K,V>
public RedisAdvancedClusterReactiveCommands<K,V> reactive()
StatefulRedisClusterConnection
RedisAdvancedClusterReactiveCommands
API for the current connection. Does not create a new
connection.reactive
in interface StatefulRedisClusterConnection<K,V>
public StatefulRedisConnection<K,V> getConnection(String nodeId)
StatefulRedisClusterConnection
nodeId
, that behavior can also lead to a closed connection once the node with the
specified nodeId
is no longer part of the cluster.
Do not close the connections. Otherwise, unpredictable behavior will occur. The nodeId must be part of the cluster and is
validated against the current topology view in Partitions
.
In contrast to the StatefulRedisClusterConnection
, node-connections do not route commands to other cluster nodes.getConnection
in interface StatefulRedisClusterConnection<K,V>
nodeId
- the node Id.public CompletableFuture<StatefulRedisConnection<K,V>> getConnectionAsync(String nodeId)
StatefulRedisClusterConnection
nodeId
, that behavior can also lead to a closed connection once the
node with the specified nodeId
is no longer part of the cluster.
Do not close the connections. Otherwise, unpredictable behavior will occur. The nodeId must be part of the cluster and is
validated against the current topology view in Partitions
.
In contrast to the StatefulRedisClusterConnection
, node-connections do not route commands to other cluster nodes.getConnectionAsync
in interface StatefulRedisClusterConnection<K,V>
nodeId
- the node Id.CompletableFuture
to indicate success or failure to connect to the requested cluster node.public StatefulRedisConnection<K,V> getConnection(String host, int port)
StatefulRedisClusterConnection
host
and port
,
are no longer part of the cluster.
Do not close the connections. Otherwise, unpredictable behavior will occur. Host and port connections are verified by
default for cluster membership, see ClusterClientOptions.isValidateClusterNodeMembership()
.
In contrast to the StatefulRedisClusterConnection
, node-connections do not route commands to other cluster nodes.
getConnection
in interface StatefulRedisClusterConnection<K,V>
host
- the host.port
- the port.public CompletableFuture<StatefulRedisConnection<K,V>> getConnectionAsync(String host, int port)
StatefulRedisClusterConnection
host
and port
, are no longer part of the cluster.
Do not close the connections. Otherwise, unpredictable behavior will occur. Host and port connections are verified by
default for cluster membership, see ClusterClientOptions.isValidateClusterNodeMembership()
.
In contrast to the StatefulRedisClusterConnection
, node-connections do not route commands to other cluster nodes.
getConnectionAsync
in interface StatefulRedisClusterConnection<K,V>
host
- the host.port
- the port.CompletableFuture
to indicate success or failure to connect to the requested cluster node.public void activated()
RedisChannelHandler
activated
in interface ConnectionFacade
activated
in class RedisChannelHandler<K,V>
public <T> RedisCommand<K,V,T> dispatch(RedisCommand<K,V,T> command)
StatefulConnection
dispatch
in interface StatefulConnection<K,V>
dispatch
in class RedisChannelHandler<K,V>
T
- result type.command
- the Redis command.public Collection<RedisCommand<K,V,?>> dispatch(Collection<? extends RedisCommand<K,V,?>> commands)
StatefulConnection
dispatch
in interface StatefulConnection<K,V>
dispatch
in class RedisChannelHandler<K,V>
commands
- the Redis commands.public void setPartitions(Partitions partitions)
public Partitions getPartitions()
getPartitions
in interface StatefulRedisClusterConnection<K,V>
public void setReadFrom(ReadFrom readFrom)
StatefulRedisClusterConnection
ReadFrom
for more information.setReadFrom
in interface StatefulRedisClusterConnection<K,V>
readFrom
- the read from setting, must not be null
.public ReadFrom getReadFrom()
StatefulRedisClusterConnection
ReadFrom
setting for this connection. Defaults to ReadFrom.MASTER
if not set.getReadFrom
in interface StatefulRedisClusterConnection<K,V>
Copyright © 2021 lettuce.io. All rights reserved.