pub struct ClusterClient { /* private fields */ }Expand description
One open connection per distinct shard node, with a slot → shard index so a single-key command goes straight to its owner.
Implementations§
Source§impl ClusterClient
impl ClusterClient
Sourcepub fn connect(host: &str, port: u16) -> KevyResult<Self>
pub fn connect(host: &str, port: u16) -> KevyResult<Self>
Connect via a seed node, discover the topology (CLUSTER SLOTS), and
open one connection per shard.
Sourcepub fn request_keyed(
&mut self,
key: &[u8],
args: &[Vec<u8>],
) -> KevyResult<Reply>
pub fn request_keyed( &mut self, key: &[u8], args: &[Vec<u8>], ) -> KevyResult<Reply>
Route a single-key command (args) to the shard owning key.
Sourcepub fn request_unkeyed(&mut self, args: &[Vec<u8>]) -> KevyResult<Reply>
pub fn request_unkeyed(&mut self, args: &[Vec<u8>]) -> KevyResult<Reply>
A keyless command (PING / etc.) — answered identically by any shard, so send it to the first.
Sourcepub fn shard_count(&self) -> usize
pub fn shard_count(&self) -> usize
Number of distinct shard nodes.
Source§impl ClusterClient
impl ClusterClient
Sourcepub fn ping(&mut self) -> KevyResult<()>
pub fn ping(&mut self) -> KevyResult<()>
PING — answered by any shard.
Sourcepub fn publish(&mut self, channel: &[u8], message: &[u8]) -> KevyResult<usize>
pub fn publish(&mut self, channel: &[u8], message: &[u8]) -> KevyResult<usize>
PUBLISH channel message — returns the number of subscribers reached.
kevy’s pub/sub is process-global (delivered to subscribers on every
core), so a cluster PUBLISH goes to any one shard.
Sourcepub fn set_with_ttl(
&mut self,
key: &[u8],
value: &[u8],
ttl: Duration,
) -> KevyResult<()>
pub fn set_with_ttl( &mut self, key: &[u8], value: &[u8], ttl: Duration, ) -> KevyResult<()>
SET key value PX ttl_ms — value with an expiry.
Sourcepub fn get(&mut self, key: &[u8]) -> KevyResult<Option<Vec<u8>>>
pub fn get(&mut self, key: &[u8]) -> KevyResult<Option<Vec<u8>>>
GET key. None if absent or expired.
Sourcepub fn incr(&mut self, key: &[u8]) -> KevyResult<i64>
pub fn incr(&mut self, key: &[u8]) -> KevyResult<i64>
INCR key. Returns the post-increment value.
Sourcepub fn expire(&mut self, key: &[u8], ttl: Duration) -> KevyResult<bool>
pub fn expire(&mut self, key: &[u8], ttl: Duration) -> KevyResult<bool>
PEXPIRE key ttl_ms. Whether the key existed and got a TTL.
Sourcepub fn persist(&mut self, key: &[u8]) -> KevyResult<bool>
pub fn persist(&mut self, key: &[u8]) -> KevyResult<bool>
PERSIST key. Whether a TTL was removed.
Sourcepub fn ttl_ms(&mut self, key: &[u8]) -> KevyResult<i64>
pub fn ttl_ms(&mut self, key: &[u8]) -> KevyResult<i64>
PTTL key. ms remaining, -2 no key, -1 no TTL.
Sourcepub fn del(&mut self, keys: &[&[u8]]) -> KevyResult<usize>
pub fn del(&mut self, keys: &[&[u8]]) -> KevyResult<usize>
DEL key [key ...] — routed per key (each to its owner) and summed, so
keys spanning shards work without a same-slot constraint.
Sourcepub fn exists(&mut self, keys: &[&[u8]]) -> KevyResult<usize>
pub fn exists(&mut self, keys: &[&[u8]]) -> KevyResult<usize>
EXISTS key [key ...] — routed per key and summed (a repeated key
counts each time, matching Redis).
Sourcepub fn dbsize(&mut self) -> KevyResult<usize>
pub fn dbsize(&mut self) -> KevyResult<usize>
DBSIZE — the cluster-wide total. kevy answers DBSIZE by fanning out
across shards internally (Route::Dbsize), so a single shard already
reports the whole-cluster count; no client-side summing.
Sourcepub fn flushall(&mut self) -> KevyResult<()>
pub fn flushall(&mut self) -> KevyResult<()>
FLUSHALL — clears every shard. kevy fans FLUSHALL out internally
(Route::Flush), so one call wipes the whole cluster.
Source§impl ClusterClient
impl ClusterClient
Sourcepub fn hset(
&mut self,
key: &[u8],
pairs: &[(&[u8], &[u8])],
) -> KevyResult<usize>
pub fn hset( &mut self, key: &[u8], pairs: &[(&[u8], &[u8])], ) -> KevyResult<usize>
HSET key field value [field value ...] — count of newly added fields.
Sourcepub fn hget(&mut self, key: &[u8], field: &[u8]) -> KevyResult<Option<Vec<u8>>>
pub fn hget(&mut self, key: &[u8], field: &[u8]) -> KevyResult<Option<Vec<u8>>>
HGET key field. None when key or field absent.
Sourcepub fn hdel(&mut self, key: &[u8], fields: &[&[u8]]) -> KevyResult<usize>
pub fn hdel(&mut self, key: &[u8], fields: &[&[u8]]) -> KevyResult<usize>
HDEL key field [field ...] — count of fields removed.
Sourcepub fn hlen(&mut self, key: &[u8]) -> KevyResult<usize>
pub fn hlen(&mut self, key: &[u8]) -> KevyResult<usize>
HLEN key.
Sourcepub fn hgetall(&mut self, key: &[u8]) -> KevyResult<Vec<Vec<u8>>>
pub fn hgetall(&mut self, key: &[u8]) -> KevyResult<Vec<Vec<u8>>>
HGETALL key — flat [f0, v0, f1, v1, …].
Sourcepub fn lpush(&mut self, key: &[u8], values: &[&[u8]]) -> KevyResult<usize>
pub fn lpush(&mut self, key: &[u8], values: &[&[u8]]) -> KevyResult<usize>
LPUSH key value [value ...] — new list length.
Sourcepub fn rpush(&mut self, key: &[u8], values: &[&[u8]]) -> KevyResult<usize>
pub fn rpush(&mut self, key: &[u8], values: &[&[u8]]) -> KevyResult<usize>
RPUSH key value [value ...] — new list length.
Sourcepub fn llen(&mut self, key: &[u8]) -> KevyResult<usize>
pub fn llen(&mut self, key: &[u8]) -> KevyResult<usize>
LLEN key.
Sourcepub fn lrange(
&mut self,
key: &[u8],
start: i64,
stop: i64,
) -> KevyResult<Vec<Vec<u8>>>
pub fn lrange( &mut self, key: &[u8], start: i64, stop: i64, ) -> KevyResult<Vec<Vec<u8>>>
LRANGE key start stop (Redis-style negative indices).
Sourcepub fn sadd(&mut self, key: &[u8], members: &[&[u8]]) -> KevyResult<usize>
pub fn sadd(&mut self, key: &[u8], members: &[&[u8]]) -> KevyResult<usize>
SADD key member [member ...] — count newly added.
Sourcepub fn srem(&mut self, key: &[u8], members: &[&[u8]]) -> KevyResult<usize>
pub fn srem(&mut self, key: &[u8], members: &[&[u8]]) -> KevyResult<usize>
SREM key member [member ...] — count removed.
Sourcepub fn scard(&mut self, key: &[u8]) -> KevyResult<usize>
pub fn scard(&mut self, key: &[u8]) -> KevyResult<usize>
SCARD key.
Sourcepub fn sismember(&mut self, key: &[u8], member: &[u8]) -> KevyResult<bool>
pub fn sismember(&mut self, key: &[u8], member: &[u8]) -> KevyResult<bool>
SISMEMBER key member.
Sourcepub fn sinter(&mut self, keys: &[&[u8]]) -> KevyResult<Vec<Vec<u8>>>
pub fn sinter(&mut self, keys: &[&[u8]]) -> KevyResult<Vec<Vec<u8>>>
SINTER key [key ...] — all keys must share a slot (route by the first).
Sourcepub fn sunion(&mut self, keys: &[&[u8]]) -> KevyResult<Vec<Vec<u8>>>
pub fn sunion(&mut self, keys: &[&[u8]]) -> KevyResult<Vec<Vec<u8>>>
SUNION key [key ...] — same-slot.
Sourcepub fn sdiff(&mut self, keys: &[&[u8]]) -> KevyResult<Vec<Vec<u8>>>
pub fn sdiff(&mut self, keys: &[&[u8]]) -> KevyResult<Vec<Vec<u8>>>
SDIFF key [key ...] — same-slot.
Sourcepub fn zadd(&mut self, key: &[u8], pairs: &[(f64, &[u8])]) -> KevyResult<usize>
pub fn zadd(&mut self, key: &[u8], pairs: &[(f64, &[u8])]) -> KevyResult<usize>
ZADD key score member [score member ...] — count newly added.
Sourcepub fn zrem(&mut self, key: &[u8], members: &[&[u8]]) -> KevyResult<usize>
pub fn zrem(&mut self, key: &[u8], members: &[&[u8]]) -> KevyResult<usize>
ZREM key member [member ...] — count removed.
Sourcepub fn zscore(&mut self, key: &[u8], member: &[u8]) -> KevyResult<Option<f64>>
pub fn zscore(&mut self, key: &[u8], member: &[u8]) -> KevyResult<Option<f64>>
ZSCORE key member. None if absent.
Sourcepub fn zcard(&mut self, key: &[u8]) -> KevyResult<usize>
pub fn zcard(&mut self, key: &[u8]) -> KevyResult<usize>
ZCARD key.