pub enum RedisTopology {
Single,
Sentinel,
Cluster,
}Expand description
Redis deployment topology (SCALE-11, #248). Controls how the
gateway connects to Redis for the distributed rate limiter,
quotas, and shared cache. The default single mode uses one
Redis URL (the existing behavior). sentinel mode resolves the
master through a Sentinel deployment. cluster mode connects
to a Redis Cluster.
Variants§
Single
Single Redis instance (the default). Uses the url field
directly. No HA — if the instance is down, the fail-open
policy applies.
Sentinel
Redis Sentinel: resolves the master via the Sentinel nodes
listed in nodes, using master_name to identify the
monitored instance. The gateway connects to the resolved
master via a ConnectionManager (automatic reconnection on
failover is handled by re-resolving on disconnect).
Cluster
Redis Cluster: connects to the cluster via the node URLs in
nodes (or url if nodes is empty). Uses the redis crate’s
ClusterClient which handles slot mapping, MOVED/ASK
redirections, and cross-slot routing automatically. Lua
scripts use hash tags ({key}) to ensure all keys in a script
land on the same slot.
Trait Implementations§
Source§impl Clone for RedisTopology
impl Clone for RedisTopology
Source§fn clone(&self) -> RedisTopology
fn clone(&self) -> RedisTopology
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RedisTopology
impl Debug for RedisTopology
Source§impl Default for RedisTopology
impl Default for RedisTopology
Source§fn default() -> RedisTopology
fn default() -> RedisTopology
Source§impl<'de> Deserialize<'de> for RedisTopology
impl<'de> Deserialize<'de> for RedisTopology
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for RedisTopology
impl JsonSchema for RedisTopology
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for RedisTopology
impl PartialEq for RedisTopology
Source§impl Serialize for RedisTopology
impl Serialize for RedisTopology
impl Copy for RedisTopology
impl Eq for RedisTopology
impl StructuralPartialEq for RedisTopology
Auto Trait Implementations§
impl Freeze for RedisTopology
impl RefUnwindSafe for RedisTopology
impl Send for RedisTopology
impl Sync for RedisTopology
impl Unpin for RedisTopology
impl UnwindSafe for RedisTopology
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more