Redis集群 - cluster集群、数据分片

在前面配置了一个简单的redis主从架构:
这里写图片描述

我们现在进入真正的集群配置:
这里写图片描述

如果我们的数据特别大,并发压力特别高,我们的redis主服务器也会有很大压力,所以我们需要多个主从,也就是集群的架构。
在mysql里,多个主从的架构下,我们借助了中间价mycat。比如,我们插入一条新闻数据,这个中间价mycat就是通过一定算法来决定这条新闻是插入哪一个服务器中。

redis其实在集群里面也能做到这一点,我们配置好集群之后,比如set name jack,可以通过某种算法来决定这个数据是进入我们哪一个redis服务器的主节点。这就是我们所谓的redis集群里的一个功能——数据分片。

其实在我们实战当中,很多时候一台服务器不可能承担所有数据,我们做分布式开发,数据也要分布式存储。

去掉主从配置

1、我们让各个redis实例独立运行

#注释掉配置文件中的
slaveof xxxxx

2、另外还需要停止哨兵(sentinel)。
3、你的redis版本必须是3.x以上。配置集群需要至少3个主节点(每个主节点对应一个从节点,这样一共6个节点)

集群的关键配置

官方教程:
https://redis.io/topics/cluster-tutorial

创建6个节点,端口分别是6379、6380、6381、6479、6480、6481。
配置文件中:
port必须不一样;pidfile必须不一样
dbfilename前面加#注释掉
cluster-enabled yes 表示打开集群
cluster-config-file nodes_6379.conf 集群模式下,每个redis节点生产一个配置文件,由redis自己维护,文件名区分即可。
appendonly yes 开启AOF存储模式
appendfilename 也要区分文件名
cluster-node-timeout 10000

6379.conf:

port 6379
pidfile "/usr/local/redis/redis_6379.pid"
#dbfilename "dump6379.rdb"
appendonly yes
appendfilename "appendonly6379.aof"
 cluster-enabled yes
  cluster-config-file nodes-6379.conf
   cluster-node-timeout 15000

其他几个配置文件也要分别做修改(注意区分不一样的地方)

关闭rdb存储

   save ""

#save 900 1
#save 300 10
#save 60 10000

这里写图片描述
其他修改配置文件也要分别做修改。

管理集群

需要安装ruby工具包

#切换到root用户
su - root
yum -y install ruby ruby-devel rubygems rpm-build
#安装管理redis的工具
gem install redis

安装好后,在我们redis目录/usr/local/redis/bin/下多了一个文件:

redis-trib.rb

启动这6个实例

/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6479.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6480.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6481.conf

为了简化,我们可以把这些写入一个shell脚本,比如start,然后执行这个文件./start 就启动6个节点了。

启动之后,我们查看进程:
这里写图片描述
cluster代表各个节点已经做好准备进入集群。如果没有这个可能前面的配置是有错误的。

清空所有节点的redis数据

(在前面学习的时候增加过数据。)
数据存放在我们配置的路径/usr/local/redis/datadir/
这个目录下可能有.rdb文件,因为在我们前面学习中是用rdb模式保存数据的。
我们现在把这些文件都删掉(因为我们是学习演示,所以直接删除更方便)
这里写图片描述

启动集群

看文档:
https://redis.io/topics/cluster-tutorial

./redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6479 127.0.0.1:6480 127.0.0.1:6481

执行上面命令之后可以看到:
这里写图片描述

可以看出有3个master和3个slave。
然后我们输入:yes
这里写图片描述
ok,我们集群最简单的配置已经成功啦(注意这个工具紧紧是帮我们把各个节点配置成集群)。

可能出现的错误:ERR Slot xxxxxx is already busy( Redis::CommandError)
如果上一次运行出错,则必须去datadir对应的目录手工删除 自动生产的cluster配置文件

测试集群

链接集群的方式,需要多加一个参数

./redis-cli -h 127.0.0.1 -c -p 6379
#-c代表链接到集群

查看集群信息:
这里写图片描述

我们来新增数据,发现是存入到6380那个节点的:
这里写图片描述

我们链接上6381这个节点get一下刚才存入的数据:
这里写图片描述

这就是集群的基本功能。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值