1)、無中心化就是所謂的去中心化(客戶端與redis節點直連,不須要中間proxy層.客戶端不須要鏈接集羣全部節點,鏈接集羣中任何一個可用節點便可)
2)、在線自動擴容縮容
3)、自動failover(節點的fail是經過集羣中超過半數的節點檢測失效時才生效.經過投票機制)
4)、單層框架相應時間短
5)、全部的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬
6)、redis 集羣中內置了 16384 個哈希槽,當須要在 Redis 集羣中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,而後把結果對 16384 求餘數,這樣每一個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis會根據節點數量大體均等的將哈希槽映射到不一樣的節點
node
一、單機的redis搭建就不說了,公衆號中有一篇從零開始搭建redis的文章,教你從零開始安裝虛擬機到redis安裝完成
公衆號:
二、redis集羣配置
1)、在redis的文件夾下面建立一個redis-cluster文件夾
程序員
2)、將redis.conf文件拷貝到當前文件夾下
redis
3)、修改剛剛拷貝的redis.conf配置文件
protected-mode no 禁止保護模式
port端口號爲6379
算法
將ip改爲 bind 0.0.0.0 任何ip都能訪問到bind的IP(也能夠註釋掉,這樣任何桌面客戶端均可以鏈接了)(把防火牆關閉了)
ruby
指定文件存放路徑 ( .rdb .aof nodes-xxxx.conf 這樣的文件都會在此路徑下)
服務器
啓動集羣模式
微信
cluster-config-file 集羣節點配置文件
架構
daemonize yes 後臺啓動
app
cluster-node-timeout 15000 指定集羣節點超時時間
框架
appendonly yes 指定持久化方式
寫好一份copy 6份以後,每臺都搞一份就能夠了
分別啓動每一臺redis,啓動成功
建立集羣,此種方式是redis5.0版本的,以前3.0版本的不是這樣的,網上有不少例子了,官網也有說明我就不介紹了
解析:看錯誤是沒有權限,有多是沒有設置鏈接密碼,配置一下試試
配置鏈接master的密碼
配置鏈接我須要的密碼
此時建立集羣成功,注意輸入命令最後面加上密碼 -a redis ,圖中能夠看出3個主機Master,3個從機Slave ,分配的槽點區間爲[0 - 5460、5461 - 1092二、10923 - 16383]
鏈接其中一個節點查看集羣信息,cluster_state:ok 集羣狀態:OK,一共16384個槽點(slots),cluster_slots_ok:16384 全部節點都是好的,6個節點等等
集羣節點信息, 三個主機節點,三個從機節點
查看redis進程
幹掉一個集羣中的一個主節點,查看集羣信息,cluster:fail,集羣狀態fail,一共16384個槽點(slots),cluster_slots_ok:10923
集羣節點信息,172.16.178.2節點的master 宕機了,fail, [0 - 5460] 個插槽失去了鏈接
將剛剛乾掉的redis啓動起來
再一次查看集羣信息,cluster_state:ok 集羣狀態:OK,一共16384個槽點(slots),cluster_slots_ok:16384 全部節點都是好的,6個節點等等
再一次查看集羣節點信息,此時172.16.178.6再也不是slave了變成了master,並且172.16.178.2也不是master了變成了slave,且以前失去鏈接的 [0 - 5460] 槽恢復了鏈接
幫忙關注一下 微信公衆號一塊兒學習 :chengxuyuan95(不同的程序員)