2016-03-14 41 views
0

讓我們假設系統中有大約1000萬用戶。我們需要將從數據庫檢索後的這些用戶對象緩存到redis中。關鍵值對用於大量數據的散列值

現在的問題是,我們會將這些JSON對象存儲到一個鍵值中,如「user_1」,或者一個更合適的解決方案將它們全部放入相同的散列「用戶」中,並且散列鍵將是用戶ID 「1在這種情況下」

我認爲有鍵值對需要比哈希多得多的內存,但性能呢?

回答

1

由於全局密鑰空間和哈希都是哈希表,訪問時間的複雜性爲O(1)。在兩種情況下,性能都不應該成爲問題。

順便說一句,我會看看這個官員Redis docs' article about memory optimization。它的第一段陳述如下:

由於Redis 2.2許多數據類型被優化爲使用較小的空間達到一定的大小 。哈希,列表,集合,只包含整數,以及 排序集在小於給定數量的元素並且最大元素大小時,以非常高效的內存編碼方式編碼, 使用多達10倍的內存(使用內存減少5次,即平均節省 )。

而且,你說:

我們擁有約10萬用戶。

然後,要麼如果使用globak密鑰空間或哈希,你應該看一看分片與Redis Cluster。可能這樣,你應該甚至可以優化更多的場景。

+0

好吧,這兩種方法都需要聚類。更簡潔的代碼你會選擇什麼? @MatíasFidemraizer – saadlulu

+1

@saadlulu在我的情況下,哈希 –