1 个不稳定版本
0.17.1 | 2021年6月10日 |
---|
#1665 在 数据库接口
每月 92 次下载
350KB
7K SLoC
redis-rs
redis-rs 是一个为Rust提供高级Redis功能的库。它通过一个非常灵活但底层的API提供对Redis所有功能的方便访问。它使用可定制的类型转换特性,以便任何操作都可以返回你所期望的类型的结果。这使得开发体验非常愉快。
该crate命名为 redis
,你可以通过Cargo依赖它
[dependencies]
redis = "0.17.0"
有关库的文档可以在 docs.rs/redis 找到。
注意:redis-rs 至少需要Rust 1.39。
基本操作
要打开连接,您需要创建一个客户端,然后从该客户端获取连接。将来将有一个连接池,但目前每个连接都是独立的,没有池化。
许多命令通过 Commands
特性实现,但也可以手动创建命令。
extern crate redis;
use redis::Commands;
fn fetch_an_integer() -> redis::RedisResult<isize> {
// connect to redis
let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_connection()?;
// throw away the result, just make sure it does not fail
let _ : () = con.set("my_key", 42)?;
// read back the key and return it. Because the return value
// from the function is a result for integer this will automatically
// convert into one.
con.get("my_key")
}
集群支持
可以通过在Cargo.toml中指定 "cluster" 作为特性入口来使用集群模式。
redis= {版本= "0.16.0",特性= [ "cluster"] }
然后您可以简单地使用 ClusterClient
,它接受一个可用节点的列表。
use redis::cluster::ClusterClient;
use redis::Commands;
fn fetch_an_integer() -> String {
// connect to redis
let nodes = vec!["redis://127.0.0.1/"];
let client = ClusterClient::open(nodes).unwrap();
let mut connection = client.get_connection().unwrap();
let _: () = connection.set("test", "test_data").unwrap();
let rv: String = connection.get("test").unwrap();
return rv;
}
开发
如果您想为库开发,makefile提供了一些命令
构建
$ make
测试
$ make test
运行基准测试
$ make bench
构建文档
$ make docs
我们鼓励您在寻求合并之前运行 clippy
。这些规则可能相当严格。在您的个人工作站上运行此程序可以节省您的时间,因为Travis CI将失败任何不满足 clippy
的构建。
$ cargo clippy --all-features --all --tests --examples -- -D clippy::all -D warnings
要使用afl运行模糊测试,首先安装 cargo-afl(cargo install -f afl
),然后运行
$ make fuzz
如果模糊器发现崩溃,为了重现它,运行
$ cd afl/<target>/
$ cargo run --bin reproduce -- out/crashes/<crashfile>
依赖
~2–15MB
~206K SLoC