簡體   English   中英

Redis集群主從 - 無法添加密鑰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM