3

我想在 Redis 中保存一个大图,并尝试使用 RedisGraph 来完成此操作。为了测试这一点,我首先创建了一个测试图来检查性能特征。对于我们需要的目的,该图相当小。

  • 顶点:约350万
  • 边缘:约1800万

这对于我们的目的来说非常有限,我们需要能够在单个数据库中将其增加到数百个数百万个边。无论如何,我正在检查空间和性能要求,但在仅加载顶点并看到以下性能后停止:

GRAPH.QUERY gid 'MATCH (t:token {token: "some-string"}) RETURN t' 

仅此检索就超过 300 毫秒,这是绝对不可接受的。

我是否错过了提高检索性能的明显方法,还是目前 RedisGraph 的限制?

谢谢

4

2 回答 2

5

如果所有节点都被标记为“token”,那么 redisgraph 将不得不扫描 350 万个实体,将每个实体的“token”属性与您提供的值(“some-string”)进行比较

为了加快速度,我建议添加一个索引,或者使用 LIMIT 限制您希望收到的结果数量。

另外值得一提的是,由于内部内存管理,第一个查询可能需要比后续查询更长的时间。

于 2018-12-15T14:42:43.797 回答
5

添加索引会在匹配时加快速度。

CREATE INDEX ON :token(token)

根据我的调查,我认为必须至少存在一个项目实例才能创建索引,但我没有对早期创建索引然后添加大部分新节点的额外开销做任何数字,而不是在所有项目都在树中之后,它们可以被整体索引。

于 2018-12-15T10:27:13.630 回答