2个版本

新版本 0.1.5 2024年8月15日
0.1.4 2024年6月20日

#1768数据库接口

Download history 129/week @ 2024-06-02 172/week @ 2024-06-09 400/week @ 2024-06-16 11/week @ 2024-06-23 74/week @ 2024-06-30 1/week @ 2024-07-07 48/week @ 2024-07-28 111/week @ 2024-08-11

159 每月下载量

MIT 许可证

230KB
5K SLoC

Release crates.io license
GitHub Issues or Pull Requests Pipeline Codecov Docs
Forum Discord

falkordb-rs

Try Free

福尔科数据库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