Redis 正在逐步淘汰 RedisGraph. 这篇博文 解释了这一决定的动机以及对现有 Redis 客户和社区成员的影响。
支持结束时间定为 2025 年 1 月 31 日。
如果您是 Redis 用户,并且更喜欢使用图形用户界面 (GUI) 进行图形查询,那么 RedisInsight 是您的正确工具。它是 100% 免费的纯桌面 Redis GUI,提供易于使用的浏览器工具来查询、可视化和交互式操作图形。您可以添加新的图形、运行查询并通过 GUI 工具探索结果。
RedisInsight 支持 RedisGraph 并允许您
作为一项好处,您在使用 Redis 和 RedisGraph 构建应用程序时可以获得更快的周转时间。
请按照以下步骤查看您的数据如何通过 RedisInsight 浏览器工具连接。
点击此链接创建 Redis 数据库 使用启用了 RedisGraph 模块的 Redis Cloud
要在本地系统上安装 RedisInsight,您需要先从 Redis 网站下载该软件。
点击此链接 访问一个表单,您可以在其中选择您选择的操作系统。
运行安装程序。Web 服务器启动后,打开 https://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"