有一個有20個域對象的,我有對象A 100萬個實例我如何Redis的哈希性能
我想將它們存儲在Redis的,我必須每天獲取超過100個實例時間。
現在,我有兩個解決方案
- 序列化對象A在JSON實例,並將其存儲使用
SET key json
- 商店每場進一個哈希場,每個實例對應一個哈希表。正如我之前所說的,我必須每次檢索超過100個實例。所以如果我使用redis hash,我必須調用數百個
HGETALL key
管道,這將非常緩慢。所以我想知道如果我可以通過使用哈希來提高速度?
有一個有20個域對象的,我有對象A 100萬個實例我如何Redis的哈希性能
我想將它們存儲在Redis的,我必須每天獲取超過100個實例時間。
現在,我有兩個解決方案
SET key json
HGETALL key
管道,這將非常緩慢。所以我想知道如果我可以通過使用哈希來提高速度?這將取決於幾件事情:
存儲序列化的對象將佔用更多的空間,因爲您有所有額外的語言特定的信息存儲以及原始數據。如果RAM空間不足或者不得不存儲大量對象,則最好將所有這些數據存儲在散列表中。由於你有100萬行,你可能會通過使用哈希來節省相當多的空間。
我最近遇到了一個非常類似的問題。起初,我嘗試將序列化對象存儲在Redis數據庫中,但我必須存儲超過500萬個對象,並且每個對象都包含大量我不需要存儲在數據庫中的多餘數據。這導致了數據庫大小膨脹並浪費了大量的RAM。
您的需求可能與我的相差很大,所以最好自己進行基準測試。嘗試序列化一個對象,看看結果有多大。將它與鍵的總和大小進行比較,並比較兩者之間的大小差異。如果序列化的對象不是很大,最好只是序列化。記住反序列化不是一個可忽略的操作也是很好的。
字符串和哈希是非常不同的數據類型,都有優點和缺點。在你揭露的情況下,你錯過了一些非常重要的事情;例如:
僅基於性能進行決策並不是一個好主意,您可能會錯過一些其他重要方面,如完整性,可伸縮性和可維護性。
可能重複[Redis字符串與Redis哈希來表示JSON:效率?](http://stackoverflow.com/questions/16375188/redis-strings-vs-redis-hashes-to-represent-json-efficiency) – DH1TW