pub struct KeyedRedisRateLimiter { /* private fields */ }Available on crate features
resilience and resilience-redis only.Expand description
Keyed Redis rate limiter with per-key configuration.
Allows different rate limits for different keys (e.g., different limits for different API tiers).
Implementations§
Source§impl KeyedRedisRateLimiter
impl KeyedRedisRateLimiter
Sourcepub async fn new(
redis_url: &str,
default_config: RedisRateLimiterConfig,
) -> Result<Self, RedisRateLimiterError>
pub async fn new( redis_url: &str, default_config: RedisRateLimiterConfig, ) -> Result<Self, RedisRateLimiterError>
Create a new keyed Redis rate limiter.
Sourcepub fn set_config(
&mut self,
key: impl Into<String>,
config: RedisRateLimiterConfig,
)
pub fn set_config( &mut self, key: impl Into<String>, config: RedisRateLimiterConfig, )
Set a custom configuration for a specific key.
Sourcepub fn remove_config(&mut self, key: &str)
pub fn remove_config(&mut self, key: &str)
Remove custom configuration for a key.
Sourcepub async fn check(&self, key: &str) -> Result<u32, RateLimitError>
pub async fn check(&self, key: &str) -> Result<u32, RateLimitError>
Check if a request for the given key is allowed.
Sourcepub async fn get_remaining(
&self,
key: &str,
) -> Result<u32, RedisRateLimiterError>
pub async fn get_remaining( &self, key: &str, ) -> Result<u32, RedisRateLimiterError>
Get remaining requests for a key.
Auto Trait Implementations§
impl Freeze for KeyedRedisRateLimiter
impl !RefUnwindSafe for KeyedRedisRateLimiter
impl Send for KeyedRedisRateLimiter
impl Sync for KeyedRedisRateLimiter
impl Unpin for KeyedRedisRateLimiter
impl UnsafeUnpin for KeyedRedisRateLimiter
impl !UnwindSafe for KeyedRedisRateLimiter
Blanket Implementations§
Source§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
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
Converts
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>
Converts
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request