一、重新分片的概念
- Redis集群的重新分片操作可以将任意数量已经指派给某个节点(源节点)的槽改为指派给另一个节点(目标节点),并且相关槽所属的键值对也会从源节点被移动到目标节点
- 重新分片操作可以在线(online)进行,在重新分片的过程中,集群不需要下线,并且源节点和目标节点都可以继续处理命令请求
二、redis-trib软件
- Redis集群的重新分片操作是由Redis的集群管理软件redis-trib负责执行的,Redis提供了进行重新分片所需的所有命令,而redis-trib则通过向源节点和目标节点发送命令来进行重新分片操作
redis-trib对集群的单个槽slot进行重新分片的步骤如下:
- ①redis-trib对目标节点发送“CLUSTER SETSLOT IMPORTING <source_id>”命令, 让目标节点准备好从源节点导入(import)属于槽slot的键值对
- ②redis-trib对源节点发送“CLUSTER SETSLOT MIGRATING <target_id>”命令,让源节点准备好将属于槽slot的键值对迁移(migrate)至目标节点
- ③redis-trib向源节点发送“CLUSTER GETKEYSINSLOT ”命令,获得最多count个属于槽slot的键值对的键名(key name)
- ④对于步骤3获得的每个键名,redis-trib都向