Crates.io | redis-sdk |
lib.rs | redis-sdk |
version | 0.1.0 |
source | src |
created_at | 2024-10-29 08:46:53.746081 |
updated_at | 2024-10-29 08:46:53.746081 |
description | library for redis |
homepage | https://github.com/rooct/redis-sdk.git |
repository | https://github.com/rooct/redis-sdk.git |
max_upload_size | |
id | 1426780 |
size | 14,325 |
CacheClient
代码的 README.md
示例。这个文档涵盖了库的基本介绍、安装、使用示例以及 API 说明等内容。可以根据需要进行调整或补充。# CacheClient
`CacheClient` 是一个基于 Redis 的缓存客户端,支持 JSON 数据的存储和获取,同时具有内存中的 LRU 缓存机制,以提高读取性能。
## 特性
- 使用 `bb8` 库实现 Redis 连接池
- 支持 LRU 缓存,降低 Redis 访问频率
- 提供简洁的 API,用于缓存 JSON 数据
- 支持设置带过期时间的键值对
- 处理 Redis 数据库索引的选择
## 依赖
在你的 `Cargo.toml` 文件中添加以下依赖:
```toml
[dependencies]
anyhow = "1.0"
bb8 = "0.7"
bb8-redis = "0.7"
lru = "0.7"
redis = "0.25"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1", features = ["full"] }
下面是如何使用 CacheClient
的简单示例:
use your_crate::CacheClient;
use serde::{Serialize, Deserialize};
use tokio;
#[derive(Serialize, Deserialize, Debug)]
struct MyData {
name: String,
value: i32,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 参数说明: url, 数据库id,缓存limit,连接数
let cache_client = CacheClient::new("redis://127.0.0.1/", Some(0), 100, 10).await?;
// 设置 JSON 数据
let data = MyData { name: "example".to_string(), value: 42 };
cache_client.set_json("my_data", &data).await?;
// 获取 JSON 数据
if let Some(retrieved_data): Option<MyData> = cache_client.get_json("my_data").await? {
println!("Retrieved data: {:?}", retrieved_data);
}
// 删除数据
cache_client.delete("my_data").await?;
Ok(())
}
CacheClient
new(url: &str, db_index: Option<u8>, cache_capacity: usize, connection_size: u32) -> Result<CacheClient>
CacheClient
实例。url
: Redis 服务器的 URL。db_index
: 可选的数据库索引,默认为 0
。cache_capacity
: LRU 缓存的最大容量。connection_size
: Redis 连接池的最大连接数。set_json<T: Serialize>(&self, key: &str, value: &T) -> Result<()>
get_json<T: DeserializeOwned>(&self, key: &str) -> Result<Option<T>>
delete(&self, key: &str) -> Result<()>
exists(&self, key: &str) -> Result<bool>
set_ex(&self, key: &str, value: &str, sec: u64) -> Result<()>
set(&self, key: &str, value: &str) -> Result<()>
keys(&self, pattern: &str) -> Result<Vec<String>>
欢迎对 CacheClient
进行贡献!请查看 CONTRIBUTING.md 文件以获取更多信息。
该项目采用 MIT 许可证,详细信息请查看 LICENSE 文件。
### 注意事项
1. **代码示例**:确保在 `使用示例` 部分中用你的实际 crate 名称替换 `your_crate`。
2. **API 文档**:根据实际 API 更新文档。
3. **依赖项**:检查并确保依赖项的版本是最新的,并且适合你的项目。
4. **许可证**:如果有其他许可证要求,可以相应地更新许可证部分。