评论

收藏

[NoSQL] 112分布式电商项目 - Redis集群(创建)

数据库 数据库 发布于:2021-07-08 09:51 | 阅读数:547 | 评论:0

  即使有了主从复制,每个数据库都要保存整个集群中的所有数据,容易形成木桶效应。
  使用Jedis实现了分片集群,是由客户端控制哪些key数据保存到哪个数据库中,如果在水平扩容时就必须手动进行数据迁移,而且需要将整个集群停止服务,这样做非常不好的。
  Redis3.0版本的一大特性就是集群(Cluster),接下来将讲解Redis集群。

1.架构
DSC0000.png
(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"
DSC0001.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/
DSC0002.png
执行命令:
./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用法:
DSC0003.png
DSC0004.png
测试
DSC0005.png
什么情况??(error) MOVED 7638 127.0.0.1:6380

  因为abc的hash槽信息是在6380上,现在使用redis-cli连接的6379,无法完成set操作,需要客户端跟踪重定向。
redis-cli -c
DSC0006.png
看到由6379跳转到了6380,然后再进入6379看能否get到数据
DSC0007.png
还是被重定向到了6380,不过已经可以获取到数据了。


4.使用Jedis连接到集群
  添加依赖,要注意jedis的版本为2.7.2
DSC0008.png
DSC0009.png
说明:这里的jc不需要关闭,因为内部已经关闭连接了。

  
关注下面的标签,发现更多相似文章