redis集群是一個分布式(distributed)、容錯(fault-tolerant)的 redis 實現, 集群可以使用的功能是普通單機 redis 所能使用的功能的一個子集(subset)。
Redis 集群中不存在中心(central)節點或者代理(proxy)節點, 集群的其中一個主要設計目標是達到線性可擴展性(linear scalability)。
Redis 集群提供了一種運行 Redis 的方式,其中數據在多個 Redis 節點間自動分區。Redis 集群還在分區期間提供一定程度的可用性,即在實際情況下能夠在某些節點發生故障或無法通信時繼續運行。但是,如果發生較大故障(例如,大多數主站不可用時),集群會停止運行。
Redis 集群是Redis 的一個分布式實現,它是一個網狀結構,每個節點都通過 TCP 連接跟其他每個節點連接。
現在來看看Redis集群實現了哪些目標?
在1000個節點的時候仍能表現得很好并且可擴展性(scalability)是線性的。集群之間使用異步復制,并且沒有合并的操作。
可接受的寫入安全(Write safety)級別:那些與大多數節點相連的客戶端所做的寫入操作,系統嘗試全部都保存下來。不過還是會有小部分寫入會丟失。
可用性(Availability):在絕大多數的主節點(master node)是可達的,并且對于每一個不可達的主節點都至少有一個它的從節點(slave)可達的情況下,Redis 集群仍能進行分區(partitions)操作。
那么Redis集群環境與非分布式Redis環境在功能上有沒有什么不同的呢?
由于集群將鍵分布在不同的槽(slot)中,所以涉及到多鍵值的復制操作也是不支持的,像set里的并集(unions)和交集(intersections)操作。
更多redis技術文章,請訪問Redis使用教程欄目!