12个版本 (4个稳定版)
1.3.0 | 2023年5月1日 |
---|---|
1.2.0 | 2021年10月22日 |
1.0.0 | 2020年10月29日 |
0.6.0 | 2020年9月11日 |
0.0.1 | 2017年2月8日 |
#300 在 数据库接口
964 每月下载量
640KB
13K SLoC
Aerospike Rust客户端
为 Rust 编写的 Aerospike 客户端库。
此库与 Rust 1.46+ 兼容,并支持以下操作系统:Linux、Mac OS X 和 Windows。当前版本支持 Aerospike v5.6 及更高版本。请查看 变更日志 了解更多详情。
用法
以下是在 Aerospike 数据库中进行 CRUD 操作的非常简单的示例。
#[macro_use]
extern crate aerospike;
use std::env;
use std::time::Instant;
use aerospike::{Bins, Client, ClientPolicy, ReadPolicy, WritePolicy};
use aerospike::operations;
fn main() {
let cpolicy = ClientPolicy::default();
let hosts = env::var("AEROSPIKE_HOSTS")
.unwrap_or(String::from("127.0.0.1:3000"));
let client = Client::new(&cpolicy, &hosts)
.expect("Failed to connect to cluster");
let now = Instant::now();
let rpolicy = ReadPolicy::default();
let wpolicy = WritePolicy::default();
let key = as_key!("test", "test", "test");
let bins = [
as_bin!("int", 999),
as_bin!("str", "Hello, World!"),
];
client.put(&wpolicy, &key, &bins).unwrap();
let rec = client.get(&rpolicy, &key, Bins::All);
println!("Record: {}", rec.unwrap());
client.touch(&wpolicy, &key).unwrap();
let rec = client.get(&rpolicy, &key, Bins::All);
println!("Record: {}", rec.unwrap());
let rec = client.get(&rpolicy, &key, Bins::None);
println!("Record Header: {}", rec.unwrap());
let exists = client.exists(&wpolicy, &key).unwrap();
println!("exists: {}", exists);
let bin = as_bin!("int", "123");
let ops = &vec![operations::put(&bin), operations::get()];
let op_rec = client.operate(&wpolicy, &key, ops);
println!("operate: {}", op_rec.unwrap());
let existed = client.delete(&wpolicy, &key).unwrap();
println!("existed (should be true): {}", existed);
let existed = client.delete(&wpolicy, &key).unwrap();
println!("existed (should be false): {}", existed);
println!("total time: {:?}", now.elapsed());
}
已知限制
以下功能目前在 Aerospike Rust 客户端中尚不支持
- 使用 Lua 用户定义函数 (UDF) 进行查询聚合。
- 使用 TLS 进行安全连接。
- 支持 IPv6。
测试
此库包含了一些测试。这些测试假定在 localhost:3000
上运行一个 Aerospike 集群。要使用不同地址的集群进行测试,请将环境变量 AEROSPIKE_HOSTS
设置为集群主机列表。
运行所有测试用例
$ export AEROSPIKE_HOSTS=127.0.0.1:3000
$ cargo test
为 aerospike
包启用调试日志
$ RUST_LOG=aerospike=debug cargo test
要启用回溯,请设置环境变量 RUST_BACKTRACE
$ RUST_BACKTRACE=1 cargo test
基准测试
位于 benches
目录中的微基准测试使用 bencher
包,并可以在 Rust 稳定版本上运行
$ export AEROSPIKE_HOSTS=127.0.0.1:3000
$ cargo bench
在 tools/benchmark 目录下有一个单独的基准测试工具,该工具旨在将数据插入到 Aerospike 服务器集群中并生成负载。
依赖项
~5–6.5MB
~126K SLoC