[英]Redis cluster master slave - not able to add key
我已經設置了 Redis 主從配置,在同一台機器上運行一個主(6379 端口)和 3 個從(6380、6381、6382)。 看起來集群設置正確,因為我可以在運行 info 命令時看到以下輸出:
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6380,state=online,offset=29,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=29,lag=1
slave2:ip=127.0.0.1,port=6382,state=online,offset=29,lag=1
master_repl_offset:43
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:42
您可以使用 ruby 腳本與 redis 相結合來創建集群,如下所述:
/usr/local/redis-3.2.11/src/redis-trib.rb create --replicas 1 192.168.142.128:7001 192.168.142.128:7002 192.168.142.128:7003 192.168.142.128:7004 192.168.142.128:7005 192.168.142.128:7006
當一個或多個 Redis 節點損壞並且無法再為其配置的哈希槽提供服務時,就會出現問題。
您將不得不再次引導集群以確保節點就要服務的哈希槽達成一致。
如果 Redis 節點包含數據庫 0 中的數據或鍵,則必須在重新運行引導程序之前清除此數據。
有一個哈希槽沒有分配給任何主人。 通過查看以下命令輸出中的第 9 列來檢查哈希槽(如果該節點沒有哈希槽,則第 9 列將為空):
redis-cli -h masterIP -p masterPORT CLUSTER NODES
可以使用以下命令分配哈希槽。
redis-cli -h masterIP -p masterPORT CLUSTER ADDSLOTS SLOTNNUMBER
但這必須為每個插槽編號單獨完成,不得遺漏。 使用 bat 腳本將其包含在 for 循環中。 就像是,
for /L %a in (0,1,5400) Do redis-cli -h 127.0.0.1 -p 7001 cluster addslots %a
此外,此命令在將 slave 分配給 master 之前起作用。 在此 ADDSLOTS 步驟並完成設置后,SET 和 GET 工作正常。 請記住在 SET 之前使用-c和 redis-cli 以啟用集群支持。
要在插入時解決插槽問題:
redis-cli --cluster fix localhost:6379
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.