Redis 正在逐步淘汰 RedisGraph。 这篇博客文章 解释了做出此决定的动机以及对现有 Redis 客户和社区成员的影响。
支持将于 2025 年 1 月 31 日结束。
如果您是喜欢使用图形用户界面 (GUI) 进行图查询的 Redis 用户,那么 RedisInsight 是适合您的工具。它是一个 100% 免费的纯桌面 Redis GUI,提供了易于使用的浏览器工具来查询、可视化和交互式操作图。您可以通过 GUI 工具添加新图、运行查询和探索结果。
RedisInsight 支持 RedisGraph 并允许您
好处是,当您使用 Redis 和 RedisGraph 构建应用时,可以更快地获得结果。
请按照以下步骤操作,了解您的数据如何通过 RedisInsight 浏览器工具连接。
点击此链接创建 Redis 数据库 ,该数据库使用启用了 RedisGraph 模块的 Redis Cloud
要在本地系统上安装 RedisInsight,您需要首先从 Redis 网站下载软件。
点击此链接 以访问允许您选择操作系统类型的表单。
运行安装程序。Web 服务器启动后,打开 http://YOUR_HOST_IP:8001 并添加 Redis 数据库连接。
选择“连接到 Redis 数据库”
输入所需的详细信息,包括名称、主机(端点)、端口和密码。然后点击“添加 Redis 数据库”。
从菜单中选择 RedisGraph。
让我们向图中添加个体。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 个名称属性。
Match 描述了查询实体之间的关系,使用 ASCII 艺术表示要匹配的模式。节点用括号 () 表示,关系用方括号 [] 表示。
如下所示,我们在标签前添加了小写字母“p”,它是一个我们可以引用的变量。它返回所有带有“Person”标签的节点。
MATCH (p:Person) RETURN p
您可以在右侧菜单中选择“图视图”以显示如下图所示的图形表示。
MATCH (p:Person {name:"Tom"}) RETURN p
运行以下查询以构建两个节点之间的关系,以及关系如何从一个节点(“Tom”)流向另一个节点(“Alex”)。
MATCH (p1:Person {name: "Tom" }), (p2:Person {name: "Alex" }) CREATE (p1)-[:Knows]->(p2)
符号“>”(大于号)表示关系流动的方向。
您可以如下所示的图形式查看该关系。
运行以下查询以创建并可视化多个个体之间的关系。
MATCH (p1:Person {name: "Tom" }), (p2:Person {name: "Susan" }), (p3:Person {name: "Bill" }) CREATE (p1)-[:Knows]->(p2), (p1)-[:Knows]->(p3)
让我们看看如何生成图来展示两个个体(Susan 和 Bill)之间的关系。
MATCH (p1:Person {name: "Bill"}), (p2:Person {name: "Jane"}) CREATE (p1)-[:Knows]->(p2)
这可以通过“朋友的朋友”这类关系来实现。例如,如果 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 链接感兴趣。
让我们尝试使用 Python 插入批量数据,然后以节点和关系的形式进行推断。
$ git clone https://github.com/redis-developer/redis-datasets
cd redis-datasets/redisgraph/datasets/iceandfire
$ 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
GRAPH.QUERY GOT_DEMO "MATCH (w:writer)-[wrote]->(b:book) return w,b"