1、分片集群
有了主从复制,每个数据库当中也需要保存每个集群中的所有数据,容易形成木桶效应。使Jedis实现了分片集群,是由客户端控制哪些key数据保存到哪个数据库中,如果在水平扩容时就必须手动进行数据迁移,而且需要将整个集群停止服务,这样做非常不好的。
Redis3.0版本的一大特性就是集群(Cluster),接下来我们一起学习集群。
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot(插槽)上,cluster 负责维护node<->slot<->value
2、搭建redis分片集群
2.1 先杀掉之前搭建的哨兵模式集群
2.2 分别修改7001、7002、7003当中的redis.conf文件 将cluster-enabled yes 这一行放开
2.3 安装ruby环境
因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境
yum -y install zlib ruby rubygems
gem install redis
发现CentOS7 库中的红宝石的版本支持到2.0.0,可ruby安装Redis(我用的redis版本是4.0.6)的需要最低是2.3.0,下面我们将版本替换成2.3.0
yum -y install curl
安装RVM
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -L get.rvm.io | bash -s stable
然后重新编译
source /usr/local/rvm/scripts/rvm
安装2.3.3版本
rvm install 2.3.3
将2.3.0版本比设置为默认的版本
rvm use 2.3.3 --default
卸载一个已知版本2.0.0
rvm remove 2.0.0
重新gem install redis
gem install redis
接下来创建集群,首先进入redis的安装包路径下:
启动三台redis
然后让你确认集群的主从信息
点击确认之后可以看到集群已经搭建成功
测试
什么情况??(error) MOVED 7638 127.0.0.1:6380
因为abc的hash槽信息是在7002上,现在使用redis-cli连接的7001,无法完成set操作,需要客户端跟踪重定向。
查看集群节点信息
今天写的很粗糙,后续会修改一下。