本篇文章主要介绍了"亲密接触Redis-第三天Redis的Load Balance)",主要涉及到方面的内容,对于软件工程感兴趣的同学可以参考一下:
前言上两天讲述了Redis的基本搭建和基于HA的集群布署方式以及相关的策略和注意点。今天开始讲述Redis的Cluster功能,而这块目前来说网上资料不是太全,...

reds-cli会动态从集群中查到含有key=1的节点,把客户端连接重定向至该节点并调用该key所绑的value
添加新master节点
- 添加一个master节点:创建一个空节点(empty node),然后将某些slot移动到这个空节点上,这个过程目前需要人工干预
- establish_config.sh根据端口生成配置文件establish_config.sh 6386?> conf/redis-6386.conf
- 启动该节点
- 加入空节点到集群redis-trib.rb add-node newip:newport 已有集群中任意ip:已有集群中任意port
注:新节点没有包含任何数据, 因为它没有包含任何slot。新加入的加点是一个主节点, 当集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中,同时新的主节点因为没有包含任何slot,不参加选举和failover。

- 为新节点分配slot:redis-trib.rb reshard ip:port
添加slave节点
- 按照添加master节点的前3步
- redis-cli连接上新节点shell,输入命令:cluster replicate 对应master的node-id
注意:在线添加slave 时,需要bgsave整个master数据,并传递到slave,再由 slave加载rdb文件到内存,rdb生成和传输的过程中消耗Master大量内存和网络IO,以此不建议单实例内存过大,线上小心操作。
删除Master节点
- 删除master节点之前首先要使用reshard移除当前master的全部slot到新的master上
- 删除空的master节点。


JEDIS(Redis JAVA客户端)的一些坑