检查集群健康状况并修复槽不一致(--cluster check/fix)
Redis集群命令
redis-cli -h node1 -p 6379 CLUSTER INFO
redis-cli -h node1 -p 6379 CLUSTER NODES
redis-cli -h node1 -p 6379 CLUSTER SHARDS
# Slot coverage, open (migrating/importing) slots and node consistency:
redis-cli --cluster check node1:6379
# Repair if there are open or unowned slots:
redis-cli --cluster fix node1:6379
# Which slot and node a key lives on (-c: follow redirects):
redis-cli -h node1 -p 6379 CLUSTER KEYSLOT kullanici:1001
redis-cli -c -h node1 -p 6379 GET kullanici:1001作用
检查所有节点是否看到相同的槽映射、16384 个槽是否全部分配,以及是否存在未完成(migrating/importing)的槽;修复发现的问题,并显示某个 key 位于哪个槽/节点。
适用场景
出现 cluster_state:fail、客户端收到 CLUSTERDOWN 或持续的 MOVED/ASK 错误,以及 reshard 被中断之后。
注意
--cluster fix 可能把无主槽分配给任意节点,并移动处于打开状态的槽中的 key;请先查看 check 的输出。若某个主节点及其所有副本都丢失,这些槽中的数据就没了;fix 只会把该槽以空槽形式分配给另一个节点。在 cluster-require-full-coverage yes(默认)下,只要有一个无主槽就会停止整个集群的写入。