RedisGraph is the first queryable Property Graph database to use sparse matrices to represent the adjacency matrix in graphs and linear algebra to query the graph.
Primary features:
To see RedisGraph in action, visit Demos.
To quickly tryout RedisGraph, launch an instance using docker:
docker run -p 6379:6379 -it --rm redislabs/redisgraph
Once loaded you can interact with RedisGraph using redis-cli.
Here we'll quickly create a small graph representing a subset of motorcycle riders and teams taking part in the MotoGP league, once created we'll start querying our data.
redis-cli
The format of results through redis-cli
is described in the RedisGraph documentation.
$ redis-cli
127.0.0.1:6379> GRAPH.QUERY MotoGP "CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'}), (:Rider {name:'Dani Pedrosa'})-[:rides]->(:Team {name:'Honda'}), (:Rider {name:'Andrea Dovizioso'})-[:rides]->(:Team {name:'Ducati'})"
1) 1) Labels added: 2
2) Nodes created: 6
3) Properties set: 6
4) Relationships created: 3
5) "Query internal execution time: 0.399000 milliseconds"
Now that our MotoGP graph is created, we can start asking questions, for example: Who's riding for team Yamaha?
127.0.0.1:6379> GRAPH.QUERY MotoGP "MATCH (r:Rider)-[:rides]->(t:Team) WHERE t.name = 'Yamaha' RETURN r.name, t.name"
1) 1) "r.name"
2) "t.name"
2) 1) 1) "Valentino Rossi"
2) "Yamaha"
3) 1) "Query internal execution time: 0.625399 milliseconds"
How many riders represent team Ducati?
127.0.0.1:6379> GRAPH.QUERY MotoGP "MATCH (r:Rider)-[:rides]->(t:Team {name:'Ducati'}) RETURN count(r)"
1) 1) "count(r)"
2) 1) 1) (integer) 1
3) 1) "Query internal execution time: 0.624435 milliseconds"
Requirements:
The RedisGraph repository: git clone https://github.com/RedisGraph/RedisGraph.git
On Ubuntu Linux, run: apt-get install build-essential cmake m4 automake peg libtool autoconf
On OS X, verify that homebrew
is installed and run: brew install cmake m4 automake peg libtool autoconf
To build, run make
in the project's directory.
Congratulations! You can find the compiled binary at src/redisgraph.so
.
First, install required Python packages by running pip install -r requirements.txt
from the tests
directory.
If you've got redis-server
in PATH, just invoke make test
.
Otherwise, invoke REDIS_SERVER=<redis-server-location> make test
.
For more verbose output, run make test V=1
.
RedisGraph is hosted by Redis, so you'll first have to load it as a Module to a Redis server: running Redis v4.0 or above.
We recommend having Redis load RedisGraph during startup by adding the following to your redis.conf file:
loadmodule /path/to/module/src/redisgraph.so
In the line above, replace /path/to/module/src/redisgraph.so
with the actual path to RedisGraph's library.
If Redis is running as a service, you must ensure that the redis
user (default) has the necessary file/folder permissions
to access redisgraph.so
.
Alternatively, you can have Redis load RedisGraph using the following command line argument syntax:
~/$ redis-server --loadmodule /path/to/module/src/redisgraph.so
Lastly, you can also use the MODULE LOAD
command. Note, however, that MODULE LOAD
is a dangerous command and may be blocked/deprecated in the future due to security considerations.
Once you've successfully loaded RedisGraph your Redis log should have lines similar to:
...
30707:M 20 Jun 02:08:12.314 * Module 'graph' loaded from <redacted>/src/redisgraph.so
...
You can call RedisGraph's commands from any Redis client.
redis-cli
$ redis-cli
127.0.0.1:6379> GRAPH.QUERY social "CREATE (:person {name: 'roi', age: 33, gender: 'male', status: 'married'})"
You can interact with RedisGraph using your client's ability to send raw Redis commands.
Depending on your client of choice, the exact method for doing that may vary.
This code snippet shows how to use RedisGraph with raw Redis commands from Python via redis-py:
import redis
r = redis.StrictRedis()
reply = r.execute_command('GRAPH.QUERY', 'social', "CREATE (:person {name:'roi', age:33, gender:'male', status:'married')")
Some languages have client libraries that provide support for RedisGraph's commands:
Project | Language | License | Author | URL |
---|---|---|---|---|
redisgraph-py | Python | BSD | Redis Labs | GitHub |
JRedisGraph | Java | BSD | Redis Labs | GitHub |
redisgraph-rb | Ruby | BSD | Redis Labs | GitHub |
redisgraph-go | Go | BSD | Redis Labs | GitHub |
redisgraph.js | JavaScript | BSD | Redis Labs | GitHub |
ioredisgraph | JavaScript | ISC | Jonah | GitHub |
php-redis-graph | PHP | MIT | KJDev | GitHub |
Read the docs at redisgraph.io.
Got questions? Feel free to ask at the RediGraph mailing list.
Redis Source Available License Agreement - see LICENSE
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。