2013-04-18 48 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