2013-04-18 20 views
1

我正在开发一个项目,我将向您解释。redis中的C(n,2)键的最佳策略

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

这些关系由算法计算。所以用不同的算法,我们有不同的关系集。算法都在变化,但积极的算法将被限制为小于3

我想保留尽可能多的关系,在内存中尽可能或磁盘,如果其中任意检索比重新计算速度更快。

我发现Redis的尝试最好的东西,但我们有2个十亿对象,所以我想减少内存使用尽可能多的。

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

我的问题是,最好的策略是什么?我应该使用redis HashMap吗?我应该使用redis虚拟机吗?如何设计键(因为如果简单地连接uuids太长)?

+0

Redis的VM已过时,你不应该使用它 –

回答

0

如果您不能存储在主内存中的所有数据,并且需要使用的磁盘,然后Redis的是不是正确的选择。虚拟机代码已被Redis 2.4弃用,并在Redis 2.6中被删除。

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

我想你会通过图形数据库,如Neo4j的或OrientDB,其目的是为了保存这种关系得到更好的服务。

+0

谢谢。我会看看你提到的dbs。 – user1882455