smart 客户端目标
- 追求性能;
smart 客户端过程
- 从集群中选一个可运行的节点,使用
cluster slots
初始化槽和节点映射; - 将
cluster slots
的结果保存在本地,为每个节点创建 JedisPool; - 准备执行命令;
smart 客户端命令执行过程
- smart 客户端在初始化的时候是知道 slot 和 node 的对应关系的;
- smart 客户端将要操作的 key 发送到目标节点,如果成功,就得到响应;
- 如果出现连接出错,随机找个活跃节点,向其发送命令,大概率会得到 moved 异常,然后重新初始化 slot 和 node 的映射关系,再向目标节点发送命令;
- 如果这样的情况连续出现 5 次,报错:
Too many cluster redirection!
;