Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Threated/redisgraphio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

26 Commits

Repository files navigation

redisgraphio

crates.io

This is a rust client library for working with the RedisGraph module for Redis.
It works in conjunction with redis-rs by implementing a trait for the redis connection.

Features

Synchronous usage

[dependencies]
redis = "0.21" # or higher
redisgraphio = "0.2"
use redis::RedisResult;
use redisgraphio::*;
fn rider_example() -> RedisResult<()> {
 let client = redis::Client::open("redis://127.0.0.1/")?;
 let mut con = client.get_connection()?;
 con.graph_query_void("my_graph", query!(
 "CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'})"
 ))?;
 // Assuming this could be malicious user input you need to escape
 let team_name = "Yamaha";
 let riders: Vec<(Node,)> = con.graph_query(
 "my_graph", // graph to query
 query!(
 "MATCH (rider:Rider)-[:rides]->(:Team {name: $team}) RETURN rider",
 {
 "team" => team_name
 },
 true // Optinal parameter to enable read only access, default is false
 )
 )?.data;
 for (rider,) in riders {
 let name: String = rider.get_property_by_index(0)?;
 println!("{name}")
 }
 Ok(())
}

Asynchronous usage

To enable the redisgraphio async commands either enable the tokio-comp or async-std-comp

[dependencies]
redis = "0.21.0"
redis-graph = { version = "0.2", features = ['tokio-comp'] }
use redis::RedisResult;
use redisgraphio::*;
async fn rider_example() -> RedisResult<()> {
 let client = redis::Client::open("redis://127.0.0.1/")?;
 let mut con = client.get_async_connection().await?;
 con.graph_query_void("my_graph", query!(
 "CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'})"
 )).await?;
 // Assuming this could be malicious user input you need to escape
 let team_name = "Yamaha";
 let riders: Vec<(Node,)> = con.graph_query(
 "my_graph",
 query!(
 "MATCH (rider:Rider)-[:rides]->(:Team {name: $team}) RETURN rider",
 {
 "team" => team_name
 },
 true // Optinal parameter to enable read only access, default is false
 )
 ).await?.data;
 for (rider,) in riders {
 let name: String = rider.get_property_by_index(0)?;
 println!("{name}")
 }
 Ok(())
}

Credit

The crates API was inspired by the redis-graph crate which also implents traits on the redis connection.
The serialisation was inspired by redis-rs itself.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /