redis3.0踩坑經歷
阿新 • • 發佈:2018-12-25
1.搭建叢集至少需要3主3從6臺伺服器或程序,否則你會遇到這錯誤
./redis-trib.rb create --replicas 1 192.168.22.43:6380 192.168.22.54:6379 ./redis-trib.rb:1573: warning: key "threshold" is duplicated and overwritten on line 1573 >>> Creating cluster *** ERROR: Invalid configuration for cluster creation. *** Redis Cluster requires at least 3 master nodes. *** This is not possible with 2 nodes and 1 replicas per node. *** At least 6 nodes are required.
如果你就想只搭建幾臺主伺服器,那麼請使用下邊的方式(可以在其中一臺伺服器cli下MEET其他伺服器即可,各伺服器可以相互連線)
127.0.0.1:6383> CLUSTER MEET 192.168.22.43 6384
OK
這種方式可以由你自己定義叢集有多少臺伺服器,但是必須指定插槽,且必須分配完畢16384個槽位才可以正常工作,否則你使用CLUSTER INFO會看到
127.0.0.1:6383> CLUSTER info cluster_state:fail cluster_slots_assigned:0 cluster_slots_ok:0 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:1 cluster_size:0 cluster_current_epoch:0 cluster_my_epoch:0 cluster_stats_messages_sent:0 cluster_stats_messages_received:0
2.分配指定範圍的槽位不成功
CLUSTER ADDSLOTS slot [slot ...]
書上資料上說分配槽位執行如下命令即可,但是實際輸了結果不行127.0.0.1:6382> CLUSTER ADDSLOTS 10923...16383
(error) ERR Invalid or out of range slot
127.0.0.1:6380> CLUSTER ADDSLOTS 0 1 2 3 4 ... 5000
(error) ERR Invalid or out of range slot
真坑,還至今不知原因,不知有沒大神看見指點一二。
解決辦法:
redis-cli -h 伺服器IP -p 埠號 cluster addslots {0..5460}
3.槽位固定是16384個,所以新增伺服器後需要注意有沒自動分配槽位,如沒有需要在其他槽位上分一些過來。
4.一個槽位可以儲存多個key,檢視1個槽位的key可以使用cluster getkeysinslot 獲取該slot的key列表
CLUSTER KEYSLOT <key> 計算鍵 key 應該被放置在哪個槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的鍵值對數量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 個 slot 槽中的鍵。