9 个版本

0.4.4 2023年6月19日
0.4.3 2022年10月29日
0.4.2 2021年12月12日
0.4.1 2021年2月21日
0.1.1 2020年11月26日

#940数据库接口

BSD-3-Clause

34KB
457 代码行

redis_graph

crates.io Continuous integration

redis-graph 为 redis crate 提供了一个小的 trait 和扩展函数,允许与可以安装为 redis 模块 的 redis 图数据类型一起工作。Redis 图操作主要使用两个顶级 Redis 命令(一个用于读写操作,一个用于只读操作)。除了这些,还有一些面向性能、配置和清理的维护命令,从 v0.4.0 版本开始也得到支持。图命令有同步和异步版本。

该 crate 称为 redis-graph,您可以通过 cargo 依赖它。您还需要在依赖中包含 redis。此版本针对 redis 0.23.0 进行了测试,但应与更高版本的版本一起运行。

[dependencies]
redis = "0.23.0"
redis-graph = "0.4.4"

或者通过 git

[dependencies.redis-graph]
git = "https://github.com/tompro/redis_graph.git"
branch = "main"

redis crate 继承异步功能(任选:'async-std-comp' 或 'tokio-comp')

[dependencies]
redis = "0.23.0"
redis-graph = { version = "0.4.4", features = ['tokio-comp'] }

同步使用

要启用 redis 图命令,只需将 trait redis_graph::GraphCommands 载入作用域。然后,redis 图命令将在您的 redis 连接上可用。要同时访问值提取器 trait,只需导入整个 crate redis_graph::*。

use redis::Commands;
use redis_graph::*;

let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_connection()?;

let _:GraphResultSet = con.graph_query(
    "my_graph", 
    "CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'})"
)?;

let _:GraphResultSet = con.graph_ro_query(
    "my_graph",
    "MATCH (rider:Rider)-[:rides]->(:Team {name:'Yamaha'}) RETURN rider"
)?;

异步使用

要启用 redis 图异步命令,只需将 redis_graph::AsyncGraphCommands 载入作用域。要同时访问值提取器 trait,只需导入整个 crate redis_graph::*。

use redis::AsyncCommands;
use redis_graph::*;

let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_async_connection().await?;

let _:GraphResultSet = con.graph_query(
    "my_graph", 
    "CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'})"
).await?;

let _:GraphResultSet = con.graph_ro_query(
    "my_graph", 
    "MATCH (rider:Rider)-[:rides]->(:Team {name:'Yamaha'}) RETURN rider"
).await?;

其他 Rust Redis 图库

redisgraph-rs 是 Redis 图模块的高级 crate。在撰写本文时,它不支持异步操作。

依赖项

~3–14MB
~191K SLoC