diff --git a/README.md b/README.md
index 3cccb4c..2934e6b 100644
--- a/README.md
+++ b/README.md
@@ -10,9 +10,9 @@ Java Client libraries for [redis-modules](https://redis.io/modules), based on [R
* [RedisAI](redisai)
* [RedisGears](redisgears)
* [RedisJSON](redisjson)
+* [RedisGraph](redisgraph)
## TODO
-* [RedisGraph](https://oss.redislabs.com/redisgraph/)
* [RediSQL](https://redisql.com/)
* [...](https://redis.io/modules)
diff --git a/all/pom.xml b/all/pom.xml
index 16edac9..f125ed3 100644
--- a/all/pom.xml
+++ b/all/pom.xml
@@ -43,5 +43,10 @@
${project.groupId}
redisjson
+
+
+ ${project.groupId}
+ redisgraph
+
diff --git a/pom.xml b/pom.xml
index 2257b8a..2afd87c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,6 +16,7 @@
redistimeseries
redisgears
redisjson
+ redisgraph
commons
@@ -111,6 +112,12 @@
redisjson
${project.version}
+
+
+ io.github.dengliming.redismodule
+ redisgraph
+ ${project.version}
+
diff --git a/redisgraph/README.md b/redisgraph/README.md
new file mode 100644
index 0000000..c5bdff1
--- /dev/null
+++ b/redisgraph/README.md
@@ -0,0 +1,16 @@
+# Java Client for RedisGraph
+See https://oss.redislabs.com/redisgraph/ for more details.
+
+## Redis commands mapping
+Redis command|Sync / Async Api|
+| --- | --- |
+GRAPH.CONFIG | RedisGraph.
getConfig()
getConfigAsync()
setConfig()
setConfigAsync() |
+GRAPH.DELETE | RedisGraph.
delete()
deleteAsync()
|
+GRAPH.EXPLAIN | RedisGraph.
explain()
explainAsync()
|
+GRAPH.LIST | RedisGraph.
list()
listAsync()
|
+GRAPH.PROFILE | RedisGraph.
profile()
profileAsync()
|
+GRAPH.QUERY | RedisGraph.
query()
queryAsync()
|
+GRAPH.RO_QUERY | RedisGraph.
readOnlyQuery()
readOnlyQueryAsync()
|
+GRAPH.SLOWLOG | RedisGraph.
slowLog()
slowLogAsync()
|
+
+
diff --git a/redisgraph/pom.xml b/redisgraph/pom.xml
new file mode 100644
index 0000000..12e8052
--- /dev/null
+++ b/redisgraph/pom.xml
@@ -0,0 +1,23 @@
+
+
+
+ redis-modules-java
+ io.github.dengliming.redismodule
+ 2.0.1-SNAPSHOT
+
+ 4.0.0
+
+ redisgraph
+ RedisGraph
+
+
+
+
+
+ io.github.dengliming.redismodule
+ commons
+
+
+
diff --git a/redisgraph/src/main/java/io/github/dengliming/redismodule/redisgraph/RedisGraph.java b/redisgraph/src/main/java/io/github/dengliming/redismodule/redisgraph/RedisGraph.java
new file mode 100644
index 0000000..c8139e0
--- /dev/null
+++ b/redisgraph/src/main/java/io/github/dengliming/redismodule/redisgraph/RedisGraph.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright 2022 dengliming.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.github.dengliming.redismodule.redisgraph;
+
+import io.github.dengliming.redismodule.common.util.RAssert;
+import io.github.dengliming.redismodule.redisgraph.model.ResultSet;
+import io.github.dengliming.redismodule.redisgraph.model.SlowLogItem;
+import org.redisson.api.RFuture;
+import org.redisson.client.codec.Codec;
+import org.redisson.client.codec.StringCodec;
+import org.redisson.command.CommandAsyncExecutor;
+
+import java.util.List;
+import java.util.Map;
+
+import static io.github.dengliming.redismodule.redisgraph.protocol.Keywords.__COMPACT;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_CONFIG_GET;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_CONFIG_SET;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_DELETE;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_EXPLAIN;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_LIST;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_PROFILE;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_QUERY;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_READ_ONLY_QUERY;
+import static io.github.dengliming.redismodule.redisgraph.protocol.RedisCommands.GRAPH_SLOWLOG;
+
+public class RedisGraph {
+
+ private final CommandAsyncExecutor commandExecutor;
+ private final Codec codec;
+
+ public RedisGraph(CommandAsyncExecutor commandExecutor) {
+ this(commandExecutor, commandExecutor.getConnectionManager().getCodec());
+ }
+
+ public RedisGraph(CommandAsyncExecutor commandExecutor, Codec codec) {
+ this.commandExecutor = commandExecutor;
+ this.codec = codec;
+ }
+
+ /**
+ * Retrieves the current value of a RedisGraph configuration parameter.
+ *
+ * GRAPH.CONFIG GET name
+ *
+ * @param parameter
+ * @return
+ */
+ public Map getConfig(String parameter) {
+ return commandExecutor.get(getConfigAsync(parameter));
+ }
+
+ public RFuture