首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Redis存储来自neo4j查询的结果

使用Redis存储来自neo4j查询的结果
EN

Stack Overflow用户
提问于 2015-11-24 07:26:00
回答 1查看 765关注 0票数 0

我在neo4j中有一个带有一些聚合函数的查询,检索信息大约需要10秒。我想要做的是将查询结果存储到redis中,并不时地由redis数据库更新来自neo4j的结果。

其中一项记录如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ entry: "123", model: "abc", reactants: [{specie: "abc@12", color: "black"}], .... }

我正在使用node.js和快递,谢谢您的关注

更新:我的查询是相当广泛的,我必须做‘展开’部分,才能通过反应物搜索(我也想要产品,但我不知道怎么做)。我不知道是否有可能被优化到至少2秒,但如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH (rx:ModelReaction),
      (rx)-[l:left_component]->(lc:MetaboliteSpecie), 
      (rx)-[r:right_component]->(rc:MetaboliteSpecie) 
      OPTIONAL MATCH (rx)-[:has_gpr]-(gpr:Root) 
      OPTIONAL MATCH (rx)-[:has_crossreference_to]-(cr)-[:has_ec_number]-(ec)
WITH rx,r,cr,ec,gpr, 
     COLLECT(DISTINCT {specie: l.cpdEntry, stoichiometry: l.stoichiometry}) as reacts 
UNWIND reacts as rcts 
WITH rx,r,cr,ec,gpr, rcts, reacts 
WHERE rcts.specie =~ {searchText} OR rx.entry =~ {searchText} OR 
      rx.name =~ {searchText} OR (ec.entry IS NOT NULL AND 
      ec.entry =~ {searchText}) OR rx.geneRule =~ {searchText} 
RETURN {entry: rx.entry, 
    reactants: reacts, 
    products:COLLECT(DISTINCT {specie: r.cpdEntry, 
                               stoichiometry: r.stoichiometry}), 
    orientation: rx.orientation, name: rx.name, ecnumber: ec.entry, 
    gpr_rule: rx.geneRule, gpr_normalized: gpr.normalized_rule}
    ORDER BY ' + reactionsTableMap[sortCol] + ' ' + order + ' SKIP {offset} LIMIT {number}'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 07:37:53

最简单的方法是将来自Neo4j的结果作为一个JSON字符串存储在redis中,并在该键上设置一个过期时间。现在,当您需要检索数据时,检查键是否在那里,然后redis充当缓存,如果键不存在,请询问Neo4j,将结果存储在redis中,并将其返回给您的Node.js程序。

伪代码,因为我不知道Node.js关于Neo4J和Redis的细节:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var result = redis.get("Record:123")
if (result == null) {
    result = neo4j.query("...");
    redis.setex("Record:123", toJson(result), 10); // set with expiry time
}
return result;

红葡萄酒会处理到期,这样你就不用了。

如果要全部存储,可以将它们存储在列表或ZSET中(例如,按记录Id排序),只需调用redis LRANGE/ZRANGE来检索列表/集的一部分。

列表示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var exist = redis.exist("Records"); // check if something stored in redis
if (!exist) {
    var queryResult = neo4j.query("...); // get a list of results from neo4j
    queryResult.foreach(result => redis.lpush("Records", toJson(result))); // add the results in the redis list
}
return redis.lrange("Records", 0, 50); // get the 50 first items

现在,只需使用redis.lrange的两个参数来迭代,得到十个项,然后再得到下一个十个项。

您还可以调用redis EXPIRE在redis列表上设置过期时间。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33897513

复制
相关文章
Mysql存储过程查询结果赋值到变量
一个参数的方法 方式 1 DECLARE cnt INT DEFAULT 0; select count(*) into cnt from test_tbl; select cnt; 方式 2 set @cnt = (select count(*) from test_tbl); select @cnt; 方式 3 select count(*) into @cnt1 from test_tbl; select @cnt1; 多个列的情况下似乎只能用 into 方式 select max(status),
似水的流年
2019/12/05
8.8K0
mybatis返回值_存储过程获取查询结果
以Map为最外层容器时就要加 @MapKey("id") 指定提取 id 作为 key。
全栈程序员站长
2022/11/09
2.1K0
高质量编码-使用redis存储查询实时数据
Redis是现在大多数互联网公司都要使用的技术,作为非关系型内存数据库,它在各种复杂并发实时场景中都广泛使用。
MiaoGIS
2019/05/24
1.6K0
高质量编码-使用redis存储查询实时数据
Neo4j使用Cypher查询图形数据
原文出处:http://www.yund.tech/zdetail.html?type=1&id=e5a7ca6d4e801e88790cc85b94e1f405 作者:jstarseven  Neo
大道七哥
2019/08/23
2.7K0
Neo4j使用Cypher查询图形数据
使用Redis存储Session
在使用 @EnableRedisHttpSession 时,可以通过 maxInactiveIntervalInSeconds 注解参数设置 Session 数据的过期失效时间,单位是秒。
摸鱼的G
2023/04/27
6660
redis慢查询日志,php安装redis扩展,redis存储session,redis主从配置
笔记内容:redis慢查询日志,php安装redis扩展,redis存储session,redis主从配置 笔记日期:2018-1-03
端碗吹水
2020/09/23
4890
MySQL使用distinct去掉查询结果重复的记录
使用 DISTINCT 关键字去掉重复记录具有较大的局限性。DISTINCT() 只能包含一个字段且查询结果也只返回该字段而非数据完整记录(如上例所示)。
用户7657330
2020/08/14
7.4K0
Neo4j常用查询语句
Cypher使用match子句查询数据,是Cypher最基本的查询子句。在查询数据时,使用Match子句指定搜索的模式,这是从Neo4j数据库查询数据的最主要的方法。match子句之后通常会跟着where子句,向模式中添加过滤性的谓词,用于对数据进行过滤。在查询数据时,查询语句分为多个部分,with子句用于对上一个查询部分的结果进行处理,以输出到下一个查询部分。
水煮麥楽雞
2022/11/20
2.7K0
如何使用neo4j存储树形无限级菜单
对于树形菜单,想必大家都不陌生,这种业务数据,由于量小,关系复杂,所以在关系型数据库中,存储的格式一般都如下所是: id,name,pid 01,bigdata,00 002,hadoop,01 003,spark,01 02,search,01 03,lucene,02 04,es,02 有没有人感到困惑,为啥不使用,主外键表,存储这种数据,而非得只使用一张表来存储呢?结果导致查询非常受限,通常只能递归出所有节点,然后对比找到指定数据。 如果使用主外键表存储,通常关系越复杂需要的外键表越多
我是攻城师
2018/05/14
2.8K0
深度解析Redis Hash算法:高效存储与查询
在现代应用程序中,数据的高效存储和查询是至关重要的。Redis作为一种内存数据库,以其快速的读写性能和多种数据结构的支持而闻名于世。其中,Redis Hash数据结构在实现高效存储和查询方面具有重要作用。本篇博客将深入探讨Redis Hash算法,包括其基本原理、用法示例以及性能优化策略,帮助您更好地利用Redis构建高性能的应用。
疯狂的KK
2023/09/28
1.2K0
深度解析Redis Hash算法:高效存储与查询
Neo4j的查询语法笔记(二)
cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识。今天接着上篇文章来看下neo4j的cpyher查询的一些基本概念和语法。 一,Node语法 在cypher里面通过用一对小括号()表示一个节点,它在cypher里面查询形式如下: 1,() 代表匹配任意一个节点 2, (node1) 代表匹配任意一个节点,并给它起了一个别名 3, (:Lable) 代表查询一个类型的数据 4, (
我是攻城师
2018/05/14
4.9K0
服务器iscsi存储挂载_redis查询命令
Disk /dev/sda: 21.4 GB, 21474836480 bytes
全栈程序员站长
2022/09/23
3.6K0
​知识图谱里的知识存储:neo4j的介绍和使用
一般情况下,我们使用数据库查找事物间的联系的时候,只需要短程关系的查询(两层以内的关联)。当需要进行更长程的,更广范围的关系查询时,就需要图数据库的功能。
磐创AI
2019/08/06
8.6K1
​知识图谱里的知识存储:neo4j的介绍和使用
测试结果存储并使用图表展示
数据源来自于pytest执行之后的结果,由于使用allure进行结果的保存,所以直接读取对应的测试结果文件
zx钟
2022/01/18
8310
测试结果存储并使用图表展示
SQL 从查询结果里查询[通俗易懂]
我想要从从表中查出每天电动车和手机各自的销售总额。这个需求还是蛮简单的,仅仅须要依据createtime和product group by即可了。以下是我写的SQL语句:
全栈程序员站长
2022/07/20
2.8K0
SQL 从查询结果里查询[通俗易懂]
EasyGBS云端录像查询结果跟实际的查询结果不同调整方法
近期我们一直在对EasyGBS的云端录像做测试,其中一个重要原因就是广大用户对云端录像的要求不断提高,因此对于云端录像的检查仍然是必不可少的一个环节。在测试过程中,我们就发现在云端录像的查询结果跟想要查询的结果不同。
TSINGSEE青犀视频
2021/08/10
1.5K0
EasyGBS云端录像查询结果跟实际的查询结果不同调整方法
如何使用Redis接管文件存储
前言php默认使用文件存储session,如果并发量大,效率会非常低。而redis对高并发的支持非常好,可以利用redis替换文件来存储session。
友儿
2022/09/11
8020
Redis 内存使用优化与存储
转载自:https://www.cnblogs.com/_popc/p/5968683.html
天涯泪小武
2019/07/02
8300
Spring Boot:使用Redis存储技术
Redis是一个开源免费的高性能key-value数据库,读取速度达110000次/s,写入速度达81000次/s。Redis支持丰富的数据类型,如Lists, Hashes, Sets 及 Ordered Sets 数据类型。Redis的所有操作都是原子性的,要么成功执行要么失败完全不执行。另外还可以通过MULTI和EXEC指令包起来支持事务。此外,Redis还具备丰富的特性 ,比如支持发布/订阅(publish/subscribe)模式,可以充当简单的消息中间件,还支持通知, key过期设置主从复制等等特性。
朝雨忆轻尘
2019/07/03
6640
Spring Boot:使用Redis存储技术
Flask 使用 Redis 存储动态数据
Redis 是一个开源的、支持网络、基于内存、可选持久性的键值对存储数据库。它的数据是保存在内存中的,因此其具有很快的存取速度;通过定期将数据同步至磁盘来实现数据持久化。
keinYe
2020/04/08
5.8K0

相似问题

是否使用Python将SQL查询结果存储到Redis?

10

将mysql查询结果存储在redis中

12

来自Redis的Siddhi查询

122

使用Redis存储数据数组(来自Laravel)

31

redis查询结果顺序

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文