转摘112分布式电商项目 - Redis集群(创建)

吞噬阅读量 28

即使有了主从复制,每个数据库都要保存整个集群中的所有数据,容易形成木桶效应。

使用Jedis实现了分片集群,是由客户端控制哪些key数据保存到哪个数据库中,如果在水平扩容时就必须手动进行数据迁移,而且需要将整个集群停止服务,这样做非常不好的。

Redis3.0版本的一大特性就是集群(Cluster),接下来将讲解Redis集群。

1.架构

![图片]:(https://img-blog.csdnimg.cn/20190722171548545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwMDQyOTM1,size_16,color_FFFFFF,t_70)
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot(插槽)上,cluster 负责维护node<->slot<->value

2.修改配置文件

1、设置不同的端口,6379、6380、6381
2、开启集群,cluster-enabled yes
3、指定集群的配置文件,cluster-config-file "nodes-xxxx.conf"
![图片]:(https://img-blog.csdnimg.cn/201907221718170.png)

3.创建集群

安装ruby环境

因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境。

复制代码
yum -y install zlib ruby rubygems
gem install redis

手动安装:
rz上传redis-3.2.1.gem

复制代码
gem install -l redis-3.2.1.gem

创建集群

首先,进入redis的安装包路径下:

复制代码
cd /usr/local/src/redis/redis-3.0.1/src/

![图片]:(https://img-blog.csdnimg.cn/20190722172140143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwMDQyOTM1,size_16,color_FFFFFF,t_70)
执行命令:

复制代码
./redis-trib.rb create --replicas 0 192.168.56.102:6379 192.168.56.102:6380 192.168.56.102:6381

--replicas 0:指定了从数据的数量为0

注意:这里不能使用127.0.0.1,否则在Jedis客户端使用时无法连接到!

redis-trib用法:
![图片]:(https://img-blog.csdnimg.cn/20190722172227414.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwMDQyOTM1,size_16,color_FFFFFF,t_70)
![图片]:(https://img-blog.csdnimg.cn/20190722172232779.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwMDQyOTM1,size_16,color_FFFFFF,t_70)

测试

![图片]:(https://img-blog.csdnimg.cn/20190722172239109.png)
什么情况??(error) MOVED 7638 127.0.0.1:6380

因为abc的hash槽信息是在6380上,现在使用redis-cli连接的6379,无法完成set操作,需要客户端跟踪重定向。

复制代码
redis-cli -c

![图片]:(https://img-blog.csdnimg.cn/20190722172259446.png)
看到由6379跳转到了6380,然后再进入6379看能否get到数据
![图片]:(https://img-blog.csdnimg.cn/20190722172311179.png)
还是被重定向到了6380,不过已经可以获取到数据了。

4.使用Jedis连接到集群

添加依赖,要注意jedis的版本为2.7.2
![图片]:(https://img-blog.csdnimg.cn/20190722172817126.png)
![图片]:(https://img-blog.csdnimg.cn/20190722172821732.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwMDQyOTM1,size_16,color_FFFFFF,t_70)
说明:这里的jc不需要关闭,因为内部已经关闭连接了。

复制代码
     ===========================
    【来源: CSDN】
    【作者: 杨林伟】
    【原文链接】 https://yanglinwei.blog.csdn.net/article/details/96875564
    声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。
0/300
全部评论0
0/300