学习

如何在 Redis 中使用 Go 查询图数据

Ajeet Raina
作者
Ajeet Raina, Redis 前开发者增长经理
生命周期结束通知

Redis 正在逐步淘汰 RedisGraph这篇博文 解释了做出此决定的动机以及对现有 Redis 客户和社区成员的影响。

支持结束时间定于 2025 年 1 月 31 日。

RedisGraph 是速度最快的图数据库,它以比任何其他图数据库快 10 倍到 600 倍的速度处理复杂的图操作。通过包括 RedisInsight、Linkurious 和 Graphileon 在内的多个可视化集成展示您的数据是如何连接的。使用行业标准的 Cypher 查询语言查询图,并轻松地从应用程序代码中使用图功能。

RedisGraph Go 客户端#

The redisgraph-go 是一个用于 RedisGraph 模块的 Golang 客户端。它依赖于 redigo 进行 Redis 连接管理,并提供对 RedisGraph 的 QUERY、EXPLAIN 和 DELETE 命令的支持。

按照以下步骤开始使用 Go 中的 RedisGraph

步骤 1. 运行 Redis Stack Docker 容器#

 docker run -p 6379:6379 --name redis/redis-stack

步骤 2. 验证 RedisGraph 模块是否已加载#

 info modules
 # Modules
 module:name=graph,ver=20405,api=1,filters=0,usedby=[],using=[],options=[]

步骤 3. 加载 RedisGraph 模块#

 go get github.com/redislabs/redisgraph-go

步骤 4. 克隆存储库#

 git clone https://github.com/RedisGraph/redisgraph-go

步骤 5. 运行测试套件#

 go test
 found packages redisgraph (client_test.go) and main (main.go) in /Users/ajeetraina/projects/redisgraph-go

步骤 6. 运行 Go 程序#

 go run main.go
 +----------+-------+--------+
 |  p.name  | p.age | c.name |
 +----------+-------+--------+
 | John Doe |    33 | Japan  |
 +----------+-------+--------+

 Cached execution 0.000000
 Query internal execution time 3.031700
 Visited countries by person:

 Name: John Doe

 Age: 33
 Pathes of persons vi

步骤 7. 监控图查询#

 redis-cli
 127.0.0.1:6379> monitor
 OK
 1633495122.588292 [0 172.17.0.1:58538] "GRAPH.DELETE" "social"
 1633495122.589641 [0 172.17.0.1:58538] "GRAPH.QUERY" "social" "CREATE (UPoQSvSnBD:person{gender:\"male\",status:\"single\",name:\"John Doe\",age:33}),(ZNxbsnHGoO:country{name:\"Japan\"}),(UPoQSvSnBD)-[:visited]->(ZNxbsnHGoO)" "--compact"
 1633495122.591407 [0 172.17.0.1:58538] "GRAPH.QUERY" "social" "MATCH (p:person)-[v:visited]->(c:country)\n           RETURN p.name, p.age, c.name" "--compact"
 1633495122.593040 [0 172.17.0.1:58538] "GRAPH.QUERY" "social" "MATCH p = (:person)-[:visited]->(:country) RETURN p" "--compact"
 1633495122.594405 [0 172.17.0.1:58538] "GRAPH.QUERY" "social" "CALL db.labels()" "--compact"
 1633495122.595552 [0 172.17.0.1:58538] "GRAPH.QUERY" "social" "CALL db.propertyKeys()" "--compact"
 1633495122.596942 [0 172.17.0.1:58538] "GRAPH.QUERY" "social" "CALL db.relationshipTypes()" "--compact"

步骤 8. 安装 RedisInsight#

运行 RedisInsight 容器。最简单的方法是运行以下命令

 docker run -d -v redisinsight:/db -p 8001:8001 redislabs/redisinsight:latest

步骤 9. 访问 RedisInsight#

接下来,将您的浏览器指向 https://localhost:8001。

步骤 10. 运行图查询#

您可以使用 limit 子句限制查询返回的记录数

GRAPH.QUERY "social" "MATCH (n) RETURN n"

参考资料#

  • 在 快速入门 教程中了解有关 RedisGraph 的更多信息。