- 任何人都知道redis複製和redis分片之間的區別?
- 它們用於什麼? Redis將數據存儲在內存中,這如何影響複製/分片?
- 它們可以同時使用它們嗎?
回答
Sharding幾乎是複製的對立面,儘管它們是正交的概念並且可以很好地協同工作。
分片(也稱爲分區)正在按鍵分割數據;而複製也稱爲鏡像,即複製所有數據。
分片可用於提高性能,減少任何資源的命中和內存負載。複製對讀取的高可用性很有用。如果您從多個副本中讀取數據,則還會降低所有資源的命中率,但所有資源的內存要求保持不變。應該注意的是,儘管您可以寫入從站,但複製只有主站 - >從站。所以你不能用這種方式來擴展寫入。假設你有以下元組:[1:Apple],[2:Banana],[3:Cherry],[4:Durian],並且我們有兩臺機器A和B.對於Sharding,我們可能存儲密鑰機器A上2,4;和機器B上的鍵1,3。通過複製,我們在機器A上存儲鍵1,2,3,4和在機器B上存儲1,2,3,4。
分片通常通過執行一致的散列在鑰匙上。上面的例子是用下面的哈希函數h(x){return x%2 == 0?A:B}實現的。
要結合這些概念,我們可能會複製每個分片。在上述情況下,機器A的所有數據(2,4)可以在機器C上覆制,機器B的所有數據(1,3)可以在機器D上覆制。
任何鍵 - 值存儲(其中Redis只是其中一個示例)支持分片,但某些交叉鍵功能將不再起作用。 Redis支持開箱即用的複製。
簡而言之,這兩個概念之間的根本區別在於,分片用於縮放寫入,而複製用於縮放讀取。正如Alex已經提到的,Replication也是實現HA的解決方案之一。
是的,如果考慮如何在集羣中的節點上覆制碎片,它們通常都會一起使用。
關於你的第三個問題,而不是RAM刷新選項,使用Redis Append Only File(AOF)是一個更好的主意。只需很小的成本(就寫入速度而言),您可以獲得更多的寫入可靠性。這很像mysql二進制日誌。建議使用1 fsync /秒。
- 1. Redis集羣和zsets
- 2. Redis複製和Redis Sentinel之間的區別
- 3. Redis中的Redis集羣支持2.8.19
- 4. spring-data-redis是否支持redis集羣?
- 5. socket.io-redis是否支持redis集羣?
- 6. Redis複製密鑰級別
- 7. Redis和kafka的區別
- 8. Kubernetes Redis集羣問題
- 9. kubernetes上的Redis集羣
- 10. Redis集羣通過HAProxy
- 11. Ignite Vs Redis Websession集羣
- 12. 應在Redis的集羣
- 13. Redis的羣集錯誤
- 14. 如何保護Redis集羣?
- 15. Redis HA沒有集羣
- 16. Raise Redis集羣授權
- 17. Redis羣集 - 從站不FAILOVER
- 18. 將redis排序集複製到集
- 19. 用Django進行redis緩存的django-redis-cache和django-redis之間的區別?
- 20. 如何在Redis中一起使用複製和分片?
- 21. redis-py:StrictRedis()和Redis()之間有什麼區別?
- 22. seneca redis pubsub transport和seneca redis queue之間的區別是什麼?
- 23. 將數據從redis獨立實例移動到redis集羣
- 24. redis ZADD <keys>在Redis集羣環境中是否一致?
- 25. Redis命令獲取Redis集羣上的所有可用密鑰?
- 26. Redis複製配置
- 27. Redis複製問題
- 28. Redis複製問題
- 29. redis和datacache之間的區別?
- 30. memcache,memcached和redis之間的區別
很酷。我認爲答案不僅限於redis – joetsuihk 2010-03-11 04:48:44
良好的答案(一般),但並沒有真正回答問題imho :) – 2010-04-22 11:17:05
我認爲這個答案提供了一個很好的迴應提問者問。大大簡化,但正確的解釋。 +1 – 2011-12-09 04:06:08