比如在7291 端口的Redis 的redis-cli 客户端操作:
127.0.0.1:7291> set qs 1
(error) MOVED 13724 127.0.0.1:7293
服务端返回MOVED,也就是根据key 计算出来的slot 不归7191 端口管理,而是归7293 端口管理,服务端返回MOVED 告诉客户端去7293 端口操作。
这个时候更换端口,用redis-cli –p 7293 操作,才会返回OK。或者用./redis-cli -c -p port 的命令(c 代表cluster)。这样客户端需要连接两次。
Jedis 等客户端会在本地维护一份slot——node 的映射关系,大部分时候不需要重定向,所以叫做smart jedis(需要客户端支持)。
问题:新增或下线了Master 节点,数据怎么迁移(重新分配)?