如何用Python在Redis中查询图形数据
RedisGraph是最快的图形数据库,可以实时处理复杂的图形操作,比任何其他图形数据库快10 - 600倍。展示您的数据是如何通过多个可视化集成(包括RedisInsight、Linkurious和Graphileon)连接的。使用行业标准Cypher查询语言查询图形,并从应用程序代码中轻松使用图形功能。
RedisGraph Python客户机#
' RedisGraph -py'是一个包,允许在Redis数据库中查询Graph数据,这是由RedisGraph模块扩展的。这个包使用RedisGraph的API扩展了RedisGraph -py的接口
按照以下步骤开始使用RedisGraph与Python:
步骤1。运行RedisMod Docker container#
码头工人运行- p
6379
: 6379——名字redislabs / redismodCopy
步骤2。验证是否加载了RedisGraph模块#
信息模块
#模块
模块:名字
=
图,版本
=
20405
、api
=
1
、过滤器
=
0
,“
=
[
]
,使用
=
[
]
、期权
=
[
]
步骤3。加载Python模块#
皮普
安装
redisgraph
步骤4。编写python代码#
进口
复述,
从
redisgraph
进口
节点
,
边缘
,
图
,
路径
r
=
复述,
.
复述,
(
宿主
=
“localhost”
,
港口
=
6379
)
redis_graph
=
图
(
“社会”
,
r
)
约翰
=
节点
(
标签
=
“人”
,
属性
=
{
“名字”
:
“John Doe”
,
“年龄”
:
33
,
“性别”
:
“男”
,
“状态”
:
“单一”
}
)
redis_graph
.
add_node
(
约翰
)
日本
=
节点
(
标签
=
“国家”
,
属性
=
{
“名字”
:
“日本”
}
)
redis_graph
.
add_node
(
日本
)
边缘
=
边缘
(
约翰
,
“访问”
,
日本
,
属性
=
{
“目的”
:
“快乐”
}
)
redis_graph
.
add_edge
(
边缘
)
redis_graph
.
提交
(
)
查询
=
”“匹配(p:人)- [v:访问{目的:“快乐”}]- > (c:国家)
RETURN p.name, p.age, v.purpose, c.name"""
结果
=
redis_graph
.
查询
(
查询
)
#打印结果集
结果
.
pretty_print条件
(
)
#使用参数
参数个数
=
{
“目的”
:
“快乐”
}
查询
=
”““匹配(p:人)- [v:访问{目的:$目的}]- > (c:国家)
RETURN p.name, p.age, v.purpose, c.name"""
结果
=
redis_graph
.
查询
(
查询
,
参数个数
)
#打印结果集
结果
.
pretty_print条件
(
)
#如果查询时间超过10毫秒,使用查询超时引发异常
结果
=
redis_graph
.
查询
(
查询
,
参数个数
,
超时
=
10
)
#遍历结果集
为
记录
在
结果
.
result_set
:
person_name
=
记录
[
0
]
person_age
=
记录
[
1
]
visit_purpose
=
记录
[
2
]
country_name
=
记录
[
3.
]
查询
=
”““匹配p =(人)-[:访问{目的:“快乐”}]- >(国家)返回p " " "
结果
=
redis_graph
.
查询
(
查询
)
#遍历结果集
为
记录
在
结果
.
result_set
:
路径
=
记录
[
0
]
打印
(
路径
)
#全部完成,移除图形。
redis_graph
.
删除
(
)
第5步。执行Python脚本#
python3测试
.
py
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
|
b 'p.name '
|
b 'p.age '
|
b 'v.purpose '
|
b 'c.name '
|
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
|
John Doe
|
33
|
快乐
|
日本
|
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
缓存执行
0.0
内部执行时间
3.3023
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
|
b 'p.name '
|
b 'p.age '
|
b 'v.purpose '
|
b 'c.name '
|
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
|
John Doe
|
33
|
快乐
|
日本
|
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
缓存执行
0.0
内部执行时间
0.2475
<
(
0
)
-
[
0
]
-
>
(
1
)
>
步骤6。监视Graph查询#
127.0
.0.1:637
9
>
监控
好吧
1632661901.024018
[
0
172.17
.0.1:61908
]
”图。查询”
“社交”
“创建(youkjweasb:人{33岁的年龄:性别:
\"
男性
\"
名称:
\"
John Doe
\"
状态:
\"
单
\"
}), (jilbktlmgw:国家{名称:
\"
日本
\"
{}), (youkjweasb:人33岁的年龄:性别:
\"
男性
\"
名称:
\"
John Doe
\"
状态:
\"
单
\"
}) -[:访问{目的:
\"
快乐
\"
}) - > (jilbktlmgw:国家{名称:
\"
日本
\"
})”
“——契约”
1632661901.025810
[
0
172.17
.0.1:61908
]
”图。查询”
“社交”
“匹配(p:人)- [v:访问{目的:
\"
快乐
\"
}) - > (c:国家)
\ n
\ t
\ t
返回p.name, p.age, v.purpose, c.name"
“——契约”
1632661901.027485
[
0
172.17
.0.1:61908
]
”图。查询”
“社交”
“数码目的=
\"
快乐
\"
匹配(p:人)- [v:访问{目的:
美元的目的
}) - > (c:国家)
\ n
\ t
\ t
返回p.name, p.age, v.purpose, c.name"
“——契约”
1632661901.029539
[
0
172.17
.0.1:61908
]
”图。查询”
“社交”
“数码目的=
\"
快乐
\"
匹配(p:人)- [v:访问{目的:
美元的目的
}) - > (c:国家)
\ n
\ t
\ t
返回p.name, p.age, v.purpose, c.name"
“——契约”
“超时”
“10”
1632661901.030965
[
0
172.17
.0.1:61908
]
”图。查询”
“社交”
"MATCH p = (:person)-[:visited{目的:
\"
快乐
\"
}) - >(国家)返回p "
“——契约”
1632661901.032250
[
0
172.17
.0.1:61908
]
”图。RO_QUERY”
“社交”
“叫db.labels ()
“——契约”
1632661901.033323
[
0
172.17
.0.1:61908
]
”图。RO_QUERY”
“社交”
“叫db.propertyKeys ()
“——契约”
1632661901.034589
[
0
172.17
.0.1:61908
]
”图。RO_QUERY”
“社交”
“叫db.relationshipTypes ()
“——契约”
1632661901.035625
[
0
172.17
.0.1:61908
]
”图。删除”
“社交”
让我们注释掉最后一行。尝试在RedisInsight上查询Graph数据。
步骤7。安装RedisInsight#
运行RedisInsight容器。最简单的方法是运行以下命令:
执行命令-d -v redisinsight:/db -p . Docker
8001
: 8001 redislabs / redisinsight:最新
步骤8。访问RedisInsight#
接下来,将浏览器指向http://localhost:8001。
第9步。运行图形查询#
你可以使用limit子句来限制查询返回的记录数量:
MATCH (n)返回n LIMIT 1
第10步。无限制地运行图形查询#
MATCH (n)返回n
参考文献#
- 使用RedisGraph和NodeJS构建Movies数据库应用
- 了解关于RedisGraph的更多信息快速入门教程。
- 使用RedisGraph浏览器工具查询,可视化和操作图形