17个版本
| 0.8.0 | 2021年2月13日 |
|---|---|
| 0.7.0 | 2020年3月7日 |
| 0.6.1 | 2020年1月9日 |
| 0.5.2 | 2019年12月14日 |
| 0.2.0 | 2019年7月31日 |
#544 在 数据库接口 中
每月 33 次下载
用于 5 个 Crates(直接使用2个)
110KB
2.5K SLoC
darkredis : 基于 std::future 和 async_await 的 Redis 客户端
darkredis 是使用新的 std::future 和 async_await 编写的 Rust Redis 客户端。它设计得易于使用,缺乏高级功能。需要 rust 1.39.0 或更高版本。
目前并非所有 Redis 命令都有便利函数,可能需要进行一些用户体验改进。
注意
从版本 0.8.0 开始,darkredis 已不再维护。
为什么?
当 darkredis 最初编写时,它是异步项目的一部分。当时,没有真正的方法可以在 redis-rs 中使用 .await,所以我决定改变这一点。结果是 darkredis,它在我的个人使用中表现得非常好,也可能适合你。它设计得尽可能简单,作为调用 Redis 命令的简单方式。
Cargo 功能
runtime_tokio(默认启用):使用 tokio 0.2 运行时和 Tcp 原语。需要运行 tokio 0.2 运行时。runtime_async_std:使用async-std而不是 tokio,使用其运行时而不是 tokio。与runtime_tokio功能互斥。
入门
- 将
darkredis添加到您的Cargo.toml文件中。 - 以某种方式创建异步上下文,例如使用
tokio0.2。 - 创建一个
ConnectionPool并获取连接!
use darkredis::ConnectionPool;
#[tokio::main]
async fn main() -> darkredis::Result<()> {
let pool = ConnectionPool::create("127.0.0.1:6379".into(), None, num_cpus::get()).await?;
let mut conn = pool.get().await;
//And away!
conn.set("secret_entrance", b"behind the bookshelf").await?;
let secret_entrance = conn.get("secret_entrance").await?;
assert_eq!(secret_entrance, Some("behind the bookshelf".into()));
//Keep our secrets
conn.del("secret_entrance").await?;
Ok(())
}
变更日志
0.8.0
重大更改
- 更新 tokio 到 1.0
- 更新依赖项
- 从 futures mutex 移至 async-std/tokio mutex。
注意
这可能是最后一个版本。不要期望有任何更新。
0.7.0
重大更改
- 将 blpop 和 brpop 命令更改为返回一个元组而不是不必要的向量。
- 添加了新的错误变体:EmptySlice
del、sadd现在返回bool。
更改
- 正确解析嵌套数组。
- 便利函数现在在给定的切片为空时返回错误。
添加
- 添加对 SCAN、SSCAN 和 HSCAN 的支持。
- 为 TYPE 命令提供便捷函数。
- 为所有 SET 命令添加便捷函数。
0.6.0
重大更改
- 将
run_commands改为返回流。 - 将
runtime_agnostic功能重命名为runtime_async_std - 将
Connection::connect分割为认证和不认证的版本。 - 连接密码现在接受
AsRef<[u8]>而不是强制使用字符串。 - 删除已弃用函数
set_with_expiry - 将
MSET改为使用新的MSetBuilder结构体
添加
- 哈希表便捷函数
- 为集合添加一些便捷函数
- 允许使用预先分配的序列化缓冲区运行命令
- 大多数类型现在实现了
Debug
0.5.2
- 提高序列化性能 50%! 🎉
- 添加基准测试
0.5.1
- 添加 blpop 和 brpop
0.5.0
- 更新到 tokio 0.2.3 和 async-std 1.2.0
- 添加过期命令
- 连接:弃用
set_with_expiry,使用set_and_expire_seconds和set_and_expire_ms代替。
0.4.1
- 更新到 async-std 1.0.1 和 futures 0.3.1
0.4.0
- (破坏性更改) 添加
runtime_agnostic和runtime_tokio功能。 - 使用
MessageStream和PMessageStream类型提供简单的 Pubsub 支持。 - 能够使用连接池的设置启动一个新的连接
- 在测试模式下使用
tokio - 为
PUBLISH添加便捷函数 - 添加 Pubsub 示例
- 为
Command和CommandList添加构建器函数的变体,这些函数修改对象而不是移动它。
0.3.1
- 显式使用来自
async-std的特质,而不是std。这解决了在 async-std 0.99.5 上的编译问题
0.3.0
- 为
INCR和DECR命令系列、APPEND、MGET、MSET、EXISTS添加便捷函数。 - 改进便捷函数的文档
- 允许在连接池中重命名客户端连接
0.2.3
- 对于 TcpStream,使用
async-std而不是runtime,允许使用 darkredis 与任何运行时一起使用。
0.2.2
- 更新依赖项
0.2.1
- 修复最新夜间版本上的编译错误
0.2.0
- 命令和命令列表不再执行任何复制操作
- 为命令和命令列表添加了 args 方法
lpush和rpush现在接受多个参数- 支持密码认证
lrange不再返回 Option,而是返回空 vec。- 为以下命令添加便捷函数:
lset、ltrim
0.1.3
- 从 lpop 和 rpop 方法中删除不必要的泛型参数。
0.1.2
- 修复一些文档错误
0.1.1
- 初始发布
测试
如果你正在修改 darkredis 并想运行测试,请确保你的本地机器上运行着 Redis 实例,端口为 6379。测试会清理任何自行设置的键,除非测试失败。如果发生这种情况,请提交一个问题。
此外,请确保使用 runtime_tokio 和 runtime_async_std 功能运行测试,以确保其正常工作。
依赖关系
~0.7–14MB
~142K SLoC