我在neo4j中查詢了一些聚合函數,大約需要10秒才能檢索信息。我想要做的是將查詢結果存儲到redis中,並且redis數據庫會不時更新neo4j的結果。使用Redis存儲來自neo4j的查詢結果
一個記錄會像:
{ entry: "123", model: "abc", reactants: [{specie: "[email protected]", color: "black"}], .... }
我使用的是快遞的node.js,預先感謝您的關注
UPDATE:我的查詢是相當廣泛的,我不得不這樣做'UNWIND'部分能夠通過反應物進行搜索(我也想要產品,但我不知道如何去做)。我不知道是否有可能進行優化,以至少2秒,但這裏有雲:
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}'
也許我們也可以看看你的Neo4j查詢是否可以優化? –
我更新了我的問題與查詢,謝謝你的回覆 – chris