90 个版本 (53 个稳定版)
新 9.1.2 | 2024 年 8 月 23 日 |
---|---|
9.0.3 | 2024 年 5 月 1 日 |
8.0.6 | 2024 年 3 月 31 日 |
7.1.2 | 2024 年 1 月 12 日 |
0.0.6 | 2017 年 11 月 7 日 |
#21 在 数据库接口
每月下载量 156,482
在 24 个 Crates 中使用 (17 个直接使用)
1.5MB
34K SLoC
Fred
Redis 和 Valkey 的异步客户端
示例
use fred::prelude::*;
#[tokio::main]
async fn main() -> Result<(), RedisError> {
let client = RedisClient::default();
client.init().await?;
// convert responses to many common Rust types
let foo: Option<String> = client.get("foo").await?;
assert!(foo.is_none());
client.set("foo", "bar", None, None, false).await?;
// or use turbofish to declare response types
println!("Foo: {:?}", client.get::<String, _>("foo").await?);
client.quit().await?;
Ok(())
}
请参阅 示例 了解更多。
功能
- RESP2 和 RESP3 协议模式。
- 集群、集中式和哨兵服务器部署。
- 通过
native-tls
或rustls
使用 TLS。 - Unix 套接字。
- 自动重连接口。
- 发布-订阅和键空间事件接口。
- 轮询客户端池接口。
- 轮询副本路由接口。
- 内置模拟接口。
- Lua 脚本 或 函数。
- 事务
- 管道
- 客户端跟踪
- 自动管道
- 零拷贝帧解析
- 跟踪
请参阅构建功能以获取更多信息。
客户端功能
名称 | 默认 | 描述 |
---|---|---|
transactions |
x | 启用 事务 接口。 |
enable-native-tls |
通过 native-tls 启用 TLS 支持。 | |
enable-rustls |
通过 rustls 和默认的加密后端功能启用 TLS 支持。 | |
enable-rustls-ring |
通过 rustls 和 ring 加密后端启用 TLS 支持。 | |
vendored-openssl |
启用 native-tls/vendored 功能。 |
|
metrics |
启用指标接口以跟踪总体延迟、网络延迟和请求/响应大小。 | |
full-tracing |
启用完整的 跟踪 支持。这可能会产生大量数据。 | |
partial-tracing |
启用部分 跟踪 支持,仅发出顶级命令和网络延迟的跟踪。 | |
blocking-encoding |
使用阻塞任务进行帧编码或解码。这对于发送或接收大量数据的客户端很有用,但需要多线程的Tokio运行时。 | |
custom-reconnect-errors |
启用一个接口,允许调用者自定义应自动触发重连逻辑的错误类型。 | |
monitor |
启用一个接口,用于运行 MONITOR 命令。 |
|
sentinel-client |
启用一个接口,用于直接与Sentinel节点通信。在sentinel层后面使用正常Redis客户端时,这不必要。 | |
sentinel-auth |
启用一个接口,用于使用不同的认证凭据连接到sentinel节点。 | |
subscriber-client |
启用一个订阅客户端接口,用于管理调用者的频道订阅状态。 | |
serde-json |
启用一个接口,通过 serde-json 自动将Redis类型转换为JSON。 |
|
mocks |
启用一个模拟层接口,可以在测试中使用它来拦截和处理命令。 | |
dns |
启用一个接口,允许调用者覆盖DNS查找逻辑。 | |
replicas |
启用一个接口,将命令路由到从节点。 | |
default-nil-types |
启用一个对 nil 值更宽松的解析接口。 |
|
sha-1 |
启用一个接口,用于对Lua脚本进行哈希处理。 | |
unix-sockets |
启用Unix套接字支持。 |
接口特性
命令接口具有许多功能,编译时间可能会迅速增加。接口特性以 i-
开头,用于控制哪些公共接口被构建。
名称 | 默认 | 描述 |
---|---|---|
i-all |
启用与基本Redis或Valkey安装一起提供的接口。这不包括 i-redis-stack 功能。 |
|
i-std |
x | 启用常用数据结构接口(列表、集合、流、键等)。 |
i-acl |
启用ACL命令接口。 | |
i-client |
启用CLIENT命令接口。 | |
i-cluster |
启用CLUSTER命令接口。 | |
i-config |
启用CONFIG命令接口。 | |
i-geo |
启用GEO命令接口。 | |
i-hashes |
启用哈希(HGET等)命令接口。 | |
i-hyperloglog |
启用hyperloglog命令接口。 | |
i-keys |
启用主要键(GET、SET等)命令接口。 | |
i-lists |
启用列表(LPUSH等)命令接口。 | |
i-scripts |
启用脚本命令接口。 | |
i-memory |
启用MEMORY命令接口。 | |
i-pubsub |
启用发布/订阅命令接口。 | |
i-server |
启用服务器控制(SHUTDOWN、BGSAVE等)接口。 | |
i-sets |
启用集合(SADD等)接口。 | |
i-sorted-sets |
启用有序集合(ZADD等)接口。 | |
i-slowlog |
启用SLOWLOG接口。 | |
i-streams |
启用流(XADD等)接口。 | |
i-tracking |
启用一个 客户端跟踪 接口。 | |
i-time-series |
启用一个 Redis Timeseries 接口。 | |
i-redis-json |
启用一个 RedisJSON 接口。 | |
i-redisearch |
启用一个 RediSearch 接口。 | |
i-redis-stack |
启用 Redis Stack 接口(i-redis-json 、i-time-series 等)。 |
调试特性
名称 | 默认 | 描述 |
---|---|---|
debug-ids |
启用一个全局计数器,用于在日志中区分命令。 | |
network-logs |
为所有套接字上的所有帧启用额外的TRACE日志。 |
依赖关系
~7–29MB
~571K SLoC