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
文件中。 - 以某种方式创建异步上下文,例如使用
tokio
0.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