pub struct RedisCacheConfig {
pub url: String,
pub key_prefix: String,
pub connection_timeout_ms: u64,
pub local_tier: bool,
pub ha: RedisHaConfig,
}Expand description
Distributed Redis-backed response cache config (SCALE-04, #183,
gateway.redis_cache, ent feature).
When present and the ent cargo feature is compiled in AND a valid
license with the redis_cache feature claim is loaded, the gateway
uses a Redis-backed response cache instead of (or in addition to)
the local in-memory moka cache — so two or more gateway instances
share one response cache. Fleet-wide cache hit ratios replace N x
per-instance cold caches, particularly impactful for canary and
rolling-deploy scenarios where new instances start empty. When the
ent feature is NOT compiled in, or the license lacks the claim,
the block is accepted but inert (the local moka cache is used and a
one-line notice is logged at startup).
Fields§
§url: StringRedis connection URL (e.g. redis://127.0.0.1:6379 or
redis-cluster://...). The connection is established once at
startup with the configured timeout.
key_prefix: StringPrefix for cache keys in Redis (default dwara:cache:). Each
cached response is stored as {prefix}{key}.
connection_timeout_ms: u64Connection timeout in milliseconds (default 1000; validated to 100..=30 000).
local_tier: boolWhether to keep a local fronting cache (two-tier: local moka + Redis). Default true: the local cache fronts Redis for hot keys, and Redis Pub/Sub invalidation evicts local entries when another instance purges a key. Set to false for a pure Redis cache (no local tier).
ha: RedisHaConfigHA and topology config (SCALE-11, #248). Same shape as
redis_rate_limiter.ha.
Trait Implementations§
Source§impl Clone for RedisCacheConfig
impl Clone for RedisCacheConfig
Source§fn clone(&self) -> RedisCacheConfig
fn clone(&self) -> RedisCacheConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RedisCacheConfig
impl Debug for RedisCacheConfig
Source§impl<'de> Deserialize<'de> for RedisCacheConfig
impl<'de> Deserialize<'de> for RedisCacheConfig
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 RedisCacheConfig
impl JsonSchema for RedisCacheConfig
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 RedisCacheConfig
impl PartialEq for RedisCacheConfig
Source§impl Serialize for RedisCacheConfig
impl Serialize for RedisCacheConfig
impl StructuralPartialEq for RedisCacheConfig
Auto Trait Implementations§
impl Freeze for RedisCacheConfig
impl RefUnwindSafe for RedisCacheConfig
impl Send for RedisCacheConfig
impl Sync for RedisCacheConfig
impl Unpin for RedisCacheConfig
impl UnwindSafe for RedisCacheConfig
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<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