讓我們假設系統中有大約1000萬用戶。我們需要將從數據庫檢索後的這些用戶對象緩存到redis中。關鍵值對用於大量數據的散列值
現在的問題是,我們會將這些JSON對象存儲到一個鍵值中,如「user_1」,或者一個更合適的解決方案將它們全部放入相同的散列「用戶」中,並且散列鍵將是用戶ID 「1在這種情況下」
我認爲有鍵值對需要比哈希多得多的內存,但性能呢?
讓我們假設系統中有大約1000萬用戶。我們需要將從數據庫檢索後的這些用戶對象緩存到redis中。關鍵值對用於大量數據的散列值
現在的問題是,我們會將這些JSON對象存儲到一個鍵值中,如「user_1」,或者一個更合適的解決方案將它們全部放入相同的散列「用戶」中,並且散列鍵將是用戶ID 「1在這種情況下」
我認爲有鍵值對需要比哈希多得多的內存,但性能呢?
由於全局密鑰空間和哈希都是哈希表,訪問時間的複雜性爲O(1)
。在兩種情況下,性能都不應該成爲問題。
順便說一句,我會看看這個官員Redis docs' article about memory optimization。它的第一段陳述如下:
由於Redis 2.2許多數據類型被優化爲使用較小的空間達到一定的大小 。哈希,列表,集合,只包含整數,以及 排序集在小於給定數量的元素並且最大元素大小時,以非常高效的內存編碼方式編碼, 使用多達10倍的內存(使用內存減少5次,即平均節省 )。
而且,你說:
我們擁有約10萬用戶。
然後,要麼如果使用globak密鑰空間或哈希,你應該看一看分片與Redis Cluster。可能這樣,你應該甚至可以優化更多的場景。
好吧,這兩種方法都需要聚類。更簡潔的代碼你會選擇什麼? @MatíasFidemraizer – saadlulu
@saadlulu在我的情況下,哈希 –