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数据库接口

Download history 52622/week @ 2024-05-03 51960/week @ 2024-05-10 49202/week @ 2024-05-17 42151/week @ 2024-05-24 41697/week @ 2024-05-31 42807/week @ 2024-06-07 45319/week @ 2024-06-14 47740/week @ 2024-06-21 43165/week @ 2024-06-28 43242/week @ 2024-07-05 47956/week @ 2024-07-12 44096/week @ 2024-07-19 38425/week @ 2024-07-26 40199/week @ 2024-08-02 36237/week @ 2024-08-09 33377/week @ 2024-08-16

每月下载量 156,482
24 个 Crates 中使用 (17 个直接使用)

MIT 许可证

1.5MB
34K SLoC

Fred

License License CircleCI Crates.io API docs

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-tlsrustls 使用 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-jsoni-time-series 等)。

调试特性

名称 默认 描述
debug-ids 启用一个全局计数器,用于在日志中区分命令。
network-logs 为所有套接字上的所有帧启用额外的TRACE日志。

依赖关系

~7–29MB
~571K SLoC