mapping between slot ranges and node clients that serve them, sorted by slot ranges
direct mapping between master addresses and node clients
non-empty if there's actually only one, non-clustered Redis node - see fallbackToSingleNode
Obtains a RedisNodeClient that currently serves particular hash slot.
Obtains a RedisNodeClient that currently serves particular hash slot. This is primarily used to
execute WATCH
-MULTI
-EXEC
transactions on a Redis Cluster deployment (RedisClusterClient cannot
directly execute them). For example:
import scala.concurrent.duration._ implicit val actorSystem: ActorSystem = ActorSystem() implicit val timeout: Timeout = 10.seconds val clusterClient = new RedisClusterClient import RedisApi.Batches.StringTyped._ import scala.concurrent.ExecutionContext.Implicits._ // transactionally divide number stored under "key" by 3 val transaction: RedisOp[Unit] = for { // this causes WATCH and GET to be sent in a single batch value <- watch("key") *> get("key").map(_.fold(0)(_.toInt)) // this causes SET wrapped in a MULTI-EXEC block to be sent _ <- set("key", (value / 3).toString).transaction } yield () val executedTransaction: Future[Unit] = clusterClient.initialized.map(_.currentState).flatMap { state => state.clientForSlot(keySlot("key")).executeOp(transaction) }
However, be aware that when executing transactions on node clients obtained from ClusterState, you must manually handle cluster redirections and cluster state changes (NodeRemovedException)
mapping between slot ranges and node clients that serve them, sorted by slot ranges
direct mapping between master addresses and node clients
non-empty if there's actually only one, non-clustered Redis node - see fallbackToSingleNode
Current cluster state known by RedisClusterClient.
mapping between slot ranges and node clients that serve them, sorted by slot ranges
direct mapping between master addresses and node clients
non-empty if there's actually only one, non-clustered Redis node - see fallbackToSingleNode