DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

RedisGraph


RedisGraph is a graph database built on Redis. Technically, it is a Redis module that extends graph database capabilities, including the property graph data model and graph query processing. RedisGraph exposes Cypher as its query language.[05][03]

Source Code
https://github.com/RedisGraph/RedisGraph[02]
Developer
Country of Origin
US
Start Year
2018 [11]
Project Types
Commercial, Open Source
Written in
C
Supported Languages
C
Embeds / Uses
Redis
Operating System
Linux
Twitter
@Redisinc[04]

Graphs in RedisGraph are represented as sparse adjacency matrices. RedisGraph uses GraphBLAS, a community-led project defining a linear algebraic interface for implementing graph algorithms, to represent sparse matrices.

Database Entry

RedisGraph


RedisGraph is a graph database built on Redis. Technically, it is a Redis module that extends graph database capabilities, including the property graph data model and graph query processing. RedisGraph exposes Cypher as its query language.

Graphs in RedisGraph are represented as sparse adjacency matrices. RedisGraph uses GraphBLAS, a community-led project defining a linear algebraic interface for implementing graph algorithms, to represent sparse matrices.[05][03]

History[06][07][08]


RedisGraph was created in 2018. One of the first official presentations by Redis Labs was published on YouTube in the same year.

RedisGraph v.1.0, the earliest version on the website, was published in November 2018. RedisGraph v.2.0 was released in January 2020 (2 years later) with a full-text search, more Cypher language coverages, and performance improvement.

Data Model[03]


RedisGraph supports the property graph data model. The data model defines nodes and edges. Nodes can have multiple labels, and edges can have a relationship type. Every node and edge can have multiple properties (i.e., attributes).

Query Execution[09]


Based on their implementation, RedisGraph uses the tuple-at-a-time model to process queries.

Graph-related operators are mainly implemented with GraphBLAS:SuiteSparse, a linear algebra package for implementing graph algorithms based on GraphBLAS. For example, the Conditional Traverse operator contains a breadth-first search traversal algorithm. The breadth-first search traversal algorithm uses matrix-matrix multiplication from GraphBLAS:SuiteSparse.

Some operators allow tuples to be batched before executing the operators' logic; for instance, the Conditional Traverse operator allows tuples to be batched before calling matrix-matrix multiplication.

Stored Procedures[10]


RedisGraph allows users to provide their stored procedures written in C. Each stored procedure must be provided and registered before compiling the RedisGraph module.

The valid stored procedure must contain a stored procedure name, a number of input arguments, an output specification (i.e., output data types, output field names), and three main routines. The three main routines include Invoke, Step, and Free. Invoke will be called first after the stored procedure is called. Then, Step will be called multiple times to produce a result tuple per Step call. Finally, Free will be called to clean up allocated memory. Users may store the state of each procedure call using the private_data pointer shared across these routines.

Derivative Systems
FalkorDB FalkorDB

Citations

11 sources
  1. https://redisgraph.io redisgraph.io Dead — Check Archive
  2. GitHub - RedisGraph/RedisGraph: A graph database as a Redis module · GitHub github.com
  3. https://redis.io/docs/latest/stack/graph redis.io Dead — Check Archive
  4. https://twitter.com/Redisinc twitter.com
  5. https://redis.io/resources/modules/ redis.io Dead — Check Archive
  6. RedisGraph 1.0 release notes | Docs redis.io
  7. Redis Graph with Roi Lipman - Redis Labs - YouTube youtube.com
  8. RedisGraph 2.0 release notes | Docs redis.io
  9. RedisGraph/src/execution_plan/execution_plan.c at master · RedisGraph/RedisGraph · GitHub github.com
  10. RedisGraph/src/procedures at master · RedisGraph/RedisGraph · GitHub github.com
  11. Insertion time should not be effected by graph size github.com
Revision #17