如何用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

我的形象

参考文献

复述,发射台
Baidu