1. 程式人生 > >redis3.0踩坑經歷

redis3.0踩坑經歷

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 槽中的鍵。


持續踩坑中。。。。。。。。。。。

個人收集一些別人有用的文章,供參考: 叢集命令:http://blog.51yip.com/nosql/1726.html

redis3.0 cluster功能介紹:https://www.cnblogs.com/qiumingcheng/p/6849125.html