1

我正在做一个项目,我将向你解释。

我有 N(10000 < N < 100000) 个对象,它们中的每一个都有相互关系,可以表示为一个整数。所以我需要将 C(N,2) 关系存储在数据库中,并且能够尽可能快地随机检索其中的任何一个。

这些关系是通过算法计算出来的。因此,使用不同的算法,我们有不同的关系集。算法正在发生变化,但主动算法将被限制在少于 3 个。

我希望将尽可能多的关系保留在内存中,或者如果随机检索它们比重新计算更快,则保留在磁盘中。

我发现 redis 是最好的尝试,但我们有 20 亿个对象,所以我希望尽可能减少内存使用量。

每个对象和每个算法都由一个 UUID 表示。

我的问题是,最好的策略是什么?我应该使用 redis HashMap 以及如何使用?我应该使用redis vm吗?如何设计密钥(因为如果简单地连接 uuid 就太长了)?

4

1 回答 1

0

如果您无法将所有数据存储在主存中,并且需要使用磁盘,那么 Redis 不是正确的选择。VM 代码在 Redis 2.4 中被弃用,并在 Redis 2.6 中被删除。

此外,存储 UUID 之间的关系也不是特别有效,因为 UUID 不能以单个 64 位整数编码。集合的 Redis 空间优化依赖于对象引用是 64 位整数的事实(通常,关系通过 Redis 的集合实现)。

我认为像 Neo4J 或 OrientDB 这样的图形数据库会更好地为您服务,其目的是存储这种关系。

于 2013-04-19T07:03:37.810 回答