我想在Redis中保存一个大图,并试图使用RedisGraph完成此操作。为了测试这一点,我首先创建了一个测试图以检查性能特征。 该图对于我们需要的目的来说很小。
这对于我们的目的来说是非常有限的,我们需要能够在单个数据库中将其增加到上百万个边缘。 无论如何,我在检查空间和性能要求后,仅在顶点上加载后就停止了运行,并看到a:的性能:
GRAPH.QUERY gid 'MATCH (t:token {token: "some-string"}) RETURN t'
仅此一次检索就超过了300毫秒,这是绝对不能接受的。
我是否错过了一种明显的方法来提高检索性能,还是目前RedisGraph的局限性?
谢谢
答案 0 :(得分:4)
添加索引将在匹配时加快很多的速度。
CREATE INDEX ON :token(token)
根据我的调查,我认为必须至少存在一个实例实例才能创建索引,但是我并没有做任何数字来增加早期创建索引然后添加大部分新节点的额外开销。 ,而不是所有项目都在树中之后就可以被索引了。
答案 1 :(得分:3)
如果所有节点都标记为“令牌”,则重新分布图将不得不扫描350万个实体,并将每个实体的“令牌”属性与您提供的值(“某些字符串”)进行比较
为了加快速度,我建议您添加一个索引,或者使用LIMIT限制要接收的结果数。
还值得一提的是,由于内部内存管理,要执行的第一个查询可能要比随后的查询花费更长的时间。