pub struct RedisCache { /* private fields */ }Expand description
Redis 缓存封装,提供键值读写、分布式锁、计数器等常用缓存操作。
Implementations§
Source§impl RedisCache
impl RedisCache
pub async fn conn(&self) -> Result<RedisClientConn, Error>
Sourcepub fn new(client: &'static RedisClient) -> Self
pub fn new(client: &'static RedisClient) -> Self
创建新的 RedisCache 实例,默认 TTL 10 分钟,无前缀。
Sourcepub fn with_prefix(self, prefix: impl Into<String>) -> Self
pub fn with_prefix(self, prefix: impl Into<String>) -> Self
设置所有缓存键的前缀,支持链式调用。
Sourcepub async fn lock(
&self,
key: &str,
ttl: Option<Duration>,
) -> Result<bool, Error>
pub async fn lock( &self, key: &str, ttl: Option<Duration>, ) -> Result<bool, Error>
尝试通过 SET NX 获取分布式锁。
返回 true 表示加锁成功,false 表示锁已被持有。
Sourcepub async fn incr(
&self,
key: &str,
delta: i64,
ttl: Option<Duration>,
) -> Result<i64, Error>
pub async fn incr( &self, key: &str, delta: i64, ttl: Option<Duration>, ) -> Result<i64, Error>
原子性地将计数器累加 delta,返回累加后的值。 键不存在时先用 SET NX 初始化为 0 再执行 INCRBY。
Sourcepub async fn set<T: ToSingleRedisArg + Send + Sync>(
&self,
key: &str,
value: T,
ttl: Option<Duration>,
) -> Result<(), Error>
pub async fn set<T: ToSingleRedisArg + Send + Sync>( &self, key: &str, value: T, ttl: Option<Duration>, ) -> Result<(), Error>
向 Redis 写入值,TTL 为 None 时使用实例默认值。
Sourcepub async fn get<T: FromRedisValue>(&self, key: &str) -> Result<T, Error>
pub async fn get<T: FromRedisValue>(&self, key: &str) -> Result<T, Error>
从 Redis 读取值,类型由泛型参数指定。
Sourcepub async fn set_struct<T>(
&self,
key: &str,
value: &T,
ttl: Option<Duration>,
) -> Result<(), Error>
pub async fn set_struct<T>( &self, key: &str, value: &T, ttl: Option<Duration>, ) -> Result<(), Error>
将结构体序列化为 JSON 后存入 Redis。
Sourcepub async fn get_struct<T>(&self, key: &str) -> Result<Option<T>, Error>where
T: DeserializeOwned,
pub async fn get_struct<T>(&self, key: &str) -> Result<Option<T>, Error>where
T: DeserializeOwned,
从 Redis 读取并反序列化为结构体,键不存在时返回 None。
Sourcepub async fn ttl(&self, key: &str) -> Result<i32, Error>
pub async fn ttl(&self, key: &str) -> Result<i32, Error>
获取指定键的剩余过期时间(秒)。 返回 -2 表示键不存在,-1 表示键无过期时间。
Sourcepub async fn get_del<T: FromRedisValue>(&self, key: &str) -> Result<T, Error>
pub async fn get_del<T: FromRedisValue>(&self, key: &str) -> Result<T, Error>
原子性地读取并删除指定键(需 Redis ≥6.2.0)。
Sourcepub async fn expire(
&self,
key: &str,
ttl: Option<Duration>,
) -> Result<bool, Error>
pub async fn expire( &self, key: &str, ttl: Option<Duration>, ) -> Result<bool, Error>
刷新指定键的过期时间而不修改其值。
返回 true 表示刷新成功,false 表示键不存在。
Sourcepub async fn set_struct_lz4<T>(
&self,
key: &str,
value: &T,
ttl: Option<Duration>,
) -> Result<(), Error>
pub async fn set_struct_lz4<T>( &self, key: &str, value: &T, ttl: Option<Duration>, ) -> Result<(), Error>
将结构体序列化为 JSON 并以 LZ4 压缩后存入 Redis。 LZ4 压缩速度快,适合对延迟敏感的场景。
Sourcepub async fn get_struct_lz4<T>(&self, key: &str) -> Result<Option<T>, Error>where
T: DeserializeOwned,
pub async fn get_struct_lz4<T>(&self, key: &str) -> Result<Option<T>, Error>where
T: DeserializeOwned,
从 Redis 读取并以 LZ4 解压后反序列化为结构体,键不存在时返回 None。
Sourcepub async fn set_struct_zstd<T>(
&self,
key: &str,
value: &T,
ttl: Option<Duration>,
) -> Result<(), Error>
pub async fn set_struct_zstd<T>( &self, key: &str, value: &T, ttl: Option<Duration>, ) -> Result<(), Error>
将结构体序列化为 JSON 并以 Zstd 压缩后存入 Redis。 Zstd 压缩率更高,适合对存储空间敏感的场景。
Sourcepub async fn get_struct_zstd<T>(&self, key: &str) -> Result<Option<T>, Error>where
T: DeserializeOwned,
pub async fn get_struct_zstd<T>(&self, key: &str) -> Result<Option<T>, Error>where
T: DeserializeOwned,
从 Redis 读取并以 Zstd 解压后反序列化为结构体,键不存在时返回 None。
Auto Trait Implementations§
impl Freeze for RedisCache
impl !RefUnwindSafe for RedisCache
impl Send for RedisCache
impl Sync for RedisCache
impl Unpin for RedisCache
impl UnsafeUnpin for RedisCache
impl !UnwindSafe for RedisCache
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