Redis集群是一個提供在多個Redis節(jié)點間共享數(shù)據(jù)的程序集。
Redis集群中不支持處理多個keys的命令。
Redis集群通過分區(qū)來提供一定程度的可用性。在某個節(jié)點宕機或者不可用的時候可以繼續(xù)處理命令。
Redis集群數(shù)據(jù)分片
在Redis集群中,使用數(shù)據(jù)分片(sharding)而不是一致性hash(consistency hashing)來實現(xiàn),一個Redis集群包含16384個哈希槽(hash slot),數(shù)據(jù)庫中的每個鍵都存在這些哈希槽中的某一個,通過CRC16校驗后對16384取模來決定。
加入說現(xiàn)在集群中有三個節(jié)點,那么
①節(jié)點A包含0到5500號哈希槽。
?、诠?jié)點B包含5501到11000號哈希槽。
?、酃?jié)點C包含11001到16384號哈希槽。
然后如果我們要增加一個節(jié)點的時候,會從ABC三個節(jié)點分別得到一部分槽到D上。如果我們移除一個節(jié)點的時候,就會把移除的節(jié)點的分隔槽移到剩下的槽上面。
Redis主從復(fù)制模型
為了實現(xiàn)Redis的集群的高可用性。Redis提供了一個主從復(fù)制模型。每個節(jié)點都會有N-1個復(fù)制品。
如果在創(chuàng)建集群的時候,我們?yōu)槊總€節(jié)點添加了一個從節(jié)點,這時候,如果其中的某個主節(jié)點掛掉了,便會把它的從節(jié)點做為新的主節(jié)點,繼續(xù)提供服務(wù)。但是如果主節(jié)點和從節(jié)點都掛掉了,那就不可以繼續(xù)使用了。
Redis集群搭建
Redis集群由多個云新在集群模式下的Redis實例組成。實例的集群模式需要通過配置來開啟。
下面是一個包含了最少選項的集群配置文件實例:
port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yespidfile /var/run/redis_xxxx.piddir /usr/local/redis-cluster/xxxx
port指定了節(jié)點的端口號
cluster-enabled yes選項用于開啟實例的集群模式
cluster-config-file nodes.conf設(shè)置了保存節(jié)點的配置文件路徑,這個文件無須認為修改,是在集群啟動的時候創(chuàng)建。
cluster-node-timeout 5000:設(shè)置了方式失敗的等待時間。即5秒還訪問不了就認為這個節(jié)點不可用。
appendonly yes:用于開啟aof持久化
pidfile /var/run/redis_xxxx.pid設(shè)置pid文件的位置,其中xxxx為端口號
dir /usr/local/redis-cluster/xxxx設(shè)置工作目錄,其中xxxx為端口號。
此時目錄中的文件是這樣的
[root@localhost 10:49 /usr/local/redis-cluster]# ll 7000 7001 7002 7003 7004 70057000:總用量 7080-rw-r--r--. 1 root root 57787 9月 10 10:44 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 09:50 redis-server7001:總用量 7080-rw-r--r--. 1 root root 57787 9月 10 10:46 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7002:總用量 7080-rw-r--r--. 1 root root 57787 9月 10 10:46 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7003:總用量 7080-rw-r--r--. 1 root root 57787 9月 10 10:47 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7004:總用量 7080-rw-r--r--. 1 root root 57787 9月 10 10:48 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server7005:總用量 7080-rw-r--r--. 1 root root 57787 9月 10 10:48 redis.conf-rwxr-xr-x. 1 root root 7185872 9月 10 10:04 redis-server[root@localhost 10:49 /usr/local/redis-cluster]#
新聞熱點
疑難解答
圖片精選