2个版本
新版本 0.1.5 | 2024年8月15日 |
---|---|
0.1.4 | 2024年6月20日 |
#1768 在 数据库接口
159 每月下载量
230KB
5K SLoC
falkordb-rs
福尔科数据库Rust客户端
用法
安装
只需将其添加到您的 Cargo.toml
中,如下所示
falkordb = { version = "0.1" }
运行FalkorDB实例
Docker
docker run --rm -p 6379:6379 falkordb/falkordb
代码示例
use falkordb::{FalkorClientBuilder, FalkorConnectionInfo};
// Connect to FalkorDB
let connection_info: FalkorConnectionInfo = "falkor://127.0.0.1:6379".try_into()
.expect("Invalid connection info");
let client = FalkorClientBuilder::new()
.with_connection_info(connection_info)
.build().expect("Failed to build client");
// Select the social graph
let mut graph = client.select_graph("social");
// Create 100 nodes and return a handful
let nodes = graph.query("UNWIND range(0, 100) AS i CREATE (n { v:1 }) RETURN n LIMIT 10")
.with_timeout(5000).execute().expect("Failed executing query");
// Can also be collected, like any other iterator
while let Some(node) = nodes.next() {
println ! ("{:?}", node);
}
功能
tokio
支持
此客户端支持使用 tokio
运行时进行非阻塞API。可以这样启用它
falkordb = { version = "0.1", features = ["tokio"] }
目前,此API需要在 多线程 tokio 调度器
中运行,且不支持 current_thread
,但未来可能会支持。
API使用几乎相同的API,但各种函数需要等待
use falkordb::{FalkorClientBuilder, FalkorConnectionInfo};
// Connect to FalkorDB
let connection_info: FalkorConnectionInfo = "falkor://127.0.0.1:6379".try_into()
.expect("Invalid connection info");
let client = FalkorClientBuilder::new_async()
.with_connection_info(connection_info)
.build().await.expect("Failed to build client");
// Select the social graph
let mut graph = client.select_graph("social");
// Create 100 nodes and return a handful
let nodes = graph.query("UNWIND range(0, 100) AS i CREATE (n { v:1 }) RETURN n LIMIT 10")
.with_timeout(5000).execute().await.expect("Failed executing query");
// Graph operations are asynchronous, but parsing is still concurrent:
while let Some(node) = nodes.next() {
println ! ("{:?}", node);
}
请注意,线程安全性仍由用户确保,即一个 AsyncGraph
不能简单地发送到由 tokio 启动的任务并在以后使用,它必须包装在 Arc
SSL/TLS 支持
此客户端目前基于 redis
包构建,因此支持使用其实现的 TLS,该实现使用 rustls
或 native_tls
。默认情况下不启用,用户需要通过启用相应的功能进行选择:"rustls"
/"native-tls"
(当使用 tokio 时:"tokio-rustls"
/"tokio-native-tls"
)。
对于 Rustls
falkordb = { version = "0.1", features = ["rustls"] }
falkordb = { version = "0.1", features = ["tokio-rustls"] }
对于 Native TLS
falkordb = { version = "0.1", features = ["native-tls"] }
falkordb = { version = "0.1", features = ["tokio-native-tls"] }
跟踪
此包完全支持使用 tracing
包进行仪器化,要使用它,只需启用 tracing
功能即可
falkordb = { version = "0.1", features = ["tracing"] }
请注意,不同的函数使用不同的过滤级别,为了避免在测试中产生垃圾信息,请确保启用所需的正确级别。
依赖项
~11–25MB
~418K SLoC