译者 | 张卫滨
Aerospike 正式 发布 Rust 客户端,以支持与其实时 NoSQL 数据库交互,实现高吞吐量、低延迟应用程序。
来自 Aerospike 的 Brian Porter 解释说,他们正式采用之前由社区支持的 Rust 客户端,主要是因为 Rust 在金融、电信、云基础设施和嵌入式系统等行业中用于构建高吞吐量、低延迟应用程序的场景变得日益普及。
像 Amazon、Cloudflare 和 Discord 这样的组织已经采用 Rust 来构建可靠的基础设施,并消除通常基于 C/C++ 的软件所带来的内存相关的错误。
Rust 客户端采用了异步优先的并发模型,允许开发者选择 Tokio crate 或async-std
作为底层实现。对于遗留或混合环境,它还包括一个 sub-crate,暴露阻塞 I/O API。
除了原子操作,客户端还支持 批命令,以便在单个调用中操作多个记录。客户端的第 2 版 增加了对读取、写入、删除和 UDF 操作的全面支持。它还支持使用主键和次键查询记录,并支持分页和限制返回记录的数量。
Rust 客户端的其他重要特性包括对副本策略和节流的支持,以及对数据模型类型的高级表示,如 Exists、OrderedMap 和 UnorderedMap。
以下代码片段简洁地演示了如何对主键索引运行查询以检索满足给定条件的记录:
let client = ...
let mut policy = ScanPolicy::default();
policy.include_bin_data = false;
match client.scan(&policy, "test", "demo", None) {
Ok(records) => {
// process the records
},
Err(err) => println!("Error fetching record: {}", err),
}
与之类似,以下展示了如何通过将记录与键关联来创建记录的方法:
let key = as_key!("test", "myset", "mykey");
let bin = as_bin!("mybin", "myvalue");
match client.put(&policy, &key, &vec![&bin]) {
Ok(()) => println!("Record written"),
Err(err) => println!("Error writing record: {}", err),
}
在 Aerospike 的 Rust 客户端路线图上,有几个强大的功能,包括对分区查询、分布式 ACID 事务、强一致性和完整 TLS 的支持。
Aerospike 还提供其他几个客户端库,帮助开发者以符合其数据库习惯的方式构建应用程序,包括 Node.js、Java、Python、C 等。
原文链接:
New Rust Client Enables Building Safe, High-Performance Apps with Aerospike(https://www.infoq.com/news/2025/08/aerospike-rust-client/)
声明:本文为 InfoQ 翻译,未经许可禁止转载。