学习

如何使用 RedisInsight 可视化图数据

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

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

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

如果您是 Redis 用户,并且更喜欢使用图形用户界面 (GUI) 进行图形查询,那么 RedisInsight 是您的正确工具。它是 100% 免费的纯桌面 Redis GUI,提供易于使用的浏览器工具来查询、可视化和交互式操作图形。您可以添加新的图形、运行查询并通过 GUI 工具探索结果。

RedisInsight 支持 RedisGraph 并允许您

  • 构建和执行查询
  • 导航您的图形
  • 浏览、分析和导出结果
  • 缩放的键盘快捷键
  • 重置视图按钮;居中整个图形
  • 使用鼠标滚轮进行缩放(双击右键缩放,双击右键缩放)
  • 能够通过单击按钮复制命令
  • 能够在查询之间持久保存节点显示选择

作为一项好处,您在使用 Redis 和 RedisGraph 构建应用程序时可以获得更快的周转时间。

请按照以下步骤查看您的数据如何通过 RedisInsight 浏览器工具连接。

步骤 1. 创建 Redis 数据库#

点击此链接创建 Redis 数据库 使用启用了 RedisGraph 模块的 Redis Cloud

步骤 2:下载 RedisInsight#

要在本地系统上安装 RedisInsight,您需要先从 Redis 网站下载该软件。

点击此链接 访问一个表单,您可以在其中选择您选择的操作系统。

运行安装程序。Web 服务器启动后,打开 https://YOUR_HOST_IP:8001 并添加 Redis 数据库连接。

选择“连接到 Redis 数据库”。

输入所需的详细信息,包括名称、主机(端点)、端口和密码。然后单击“添加 REDIS 数据库”。

步骤 3:单击“RedisGraph”,然后单击“添加图形”#

从菜单中选择 RedisGraph。

步骤 4. 创建一个名为“朋友”的新图形#

让我们将个人添加到图形中。CREATE 用于引入新的节点和关系。在 RedisInsight GUI 上运行以下 Cypher 查询以添加名为“person”的标签和名为“name”的属性。

CREATE (:Person{name:"Tom" }),  (:Person{name:"Alex" }), (:Person{name:"Susan" }), (:Person{name:"Bill" }), (:Person{name:"Jane" })

正如我们所见,“1”标签已添加,它指的是“person”标签。对于每个节点都是一样的,因此只创建一次。总共创建了 5 个节点。五个“name”属性指的是已添加的 5 个名称属性。

步骤 6:查看所有个人(节点)#

Match 描述了查询实体之间的关系,使用 ASCII 艺术来表示与之匹配的模式。节点用括号 () 表示,关系用方括号 [] 表示。

如下所示,我们在标签前面添加了小写字母“p”,这是一个我们可以引用的变量。它返回所有名为“Person”的标签的节点。

MATCH (p:Person) RETURN p

您可以在右侧菜单中选择“图形视图”以显示如下所示的图形表示

步骤 7. 查看单个个人(节点)#

MATCH (p:Person {name:"Tom"}) RETURN p

步骤 8:可视化个人之间的关系#

运行以下查询以构建两个节点之间的关系,以及关系如何从一个节点(“Tom”)流向另一个节点(“Alex”)。

MATCH (p1:Person {name: "Tom" }), (p2:Person {name: "Alex" }) CREATE (p1)-[:Knows]->(p2)

符号“>” (大于) 显示了关系的流动方向。

您可以查看以图形形式表示的关系,如下所示

步骤 9. 创建和可视化多个关系#

运行以下查询以创建和可视化多个个人之间的关系

MATCH (p1:Person {name: "Tom" }), (p2:Person {name: "Susan" }), (p3:Person {name: "Bill" }) CREATE (p1)-[:Knows]->(p2), (p1)-[:Knows]->(p3)

步骤 10. 创建和可视化两个个人(Susan 和 Bill)之间的关系#

让我们看看如何生成一个图形,该图形展示了两个个人 Susan 和 Bill 之间的关系

步骤 11. 创建和可视化两个个人(Bill 和 Jane)之间的关系#

MATCH (p1:Person {name: "Bill"}), (p2:Person {name: "Jane"}) CREATE (p1)-[:Knows]->(p2)

步骤 12. 构建社交网络#

这可以通过“朋友的朋友”之类的关系来实现。例如,如果 Tom 想与 Jane 建立社交网络,他有两个认识 Jane 的联系人 - 一个是 Susan,另一个是 Bill。

MATCH p = (p1:Person {name: "Tom" })-[:Knows*1..3]-(p2:Person {name: "Jane"}) RETURN p

在这个查询中,我们将变量“p”分配给节点图形路径。我们搜索“Tom”作为 p1,搜索“Jane”作为“p2”。我们表示对 1..3 度分离的“knows”链接感兴趣。

步骤 13. 清理图形#

导入批量图形数据#

让我们尝试使用 Python 插入批量数据,然后将其以节点和关系的形式推断出来。

步骤 14. 克隆存储库**#

$ git clone https://github.com/redis-developer/redis-datasets
cd redis-datasets/redisgraph/datasets/iceandfire

步骤 15. 执行脚本#

$ python3 bulk_insert.py GOT_DEMO -n data/character.csv -n data/house.csv -n data/book.csv -n data/writer.csv -r data/wrote.csv -r data/belongs.csv -h 192.168.1.9 -p 6379



2124 nodes created with label 'b'character''
438 nodes created with label 'b'house''
12 nodes created with label 'b'book''
3 nodes created with label 'b'writer''
14 relations created for type 'b'wrote''
2208 relations created for type 'b'belongs''
Construction of graph 'GOT_DEMO' complete: 2577 nodes created, 2222 relations created in 0.169954 seconds

步骤 16. 运行 Cypher 查询#

GRAPH.QUERY GOT_DEMO "MATCH (w:writer)-[wrote]->(b:book) return w,b"

其他资源#