Redis高可用高并发集群配置

Redis集群配置

Redis主从复制只能解决高可用的问题,但是为了解决无法高并发的这个问题,采用几群的配置。

Redis集群的执行流程分析

哈希槽说明

Redis集群中内置了16384 个哈希槽,当需要在 Redis集群中放置一个 key-value时,redis 先对key使用crc16算法算出一个结果,然后把结果对16384求余数,这样每个key都
会对应一个编号在0-16383之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。
当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中, 一个hash slot中会有很多key和value。你可以理解成表的分区,使用
单节点时的redis时只有一个表, 所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你inser数据时 会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。

执行流程分析

假如redis集群里面能存放90个key,那么redis集群把90key平分到3个主机
redis对每个主机面30个存储位置都编号,当应用连接到主机1上面时,应该发送一个写的命令
主机使用crc16算出槽号
如果槽号在1-30可以直接操作主机1
如果槽号在31-60那么redis会转发到主机2
如果应该再发一个命令set age 22
那么主机2使用crc16再算槽号再转发

集群搭建的详细步骤

1.在root下面创建一个redis-cluster的文件夹,拷贝之前安装的redis的server和.conf文件到里面,并创建redis1文件夹。
在这里插入图片描述
2.把.conf文件移动打redis1里面去,再编辑配置文件
在这里插入图片描述
3.编辑的内容和具体行数如,下我们打算配置6台,从端口7000开始到7005:

bind 0.0.0.0                    69行
port 7000                       92行
daemonize yes                   136行
# 打开aof 持久化
appendonly yes                  672行 
# 开启集群
cluster-enabled yes             814行
# 集群的配置文件,该文件自动生成   
cluster-config-file nodes-7000.conf  822行
# 集群的超时时间
cluster-node-timeout 5000         828

4.做好一个我们可以将文件夹复制成六份:
在这里插入图片描述
5.改每个文件的配置文件,因为端口号各不相同:
在这里插入图片描述
直接输入替换命令即可,如下图的端口7002替换配置:
在这里插入图片描述
6.保存退出后,逐个启动(下图省略了redis-5和redis-6的启动,没有截图上):
在这里插入图片描述
7.查看一下当前启动的redis,全部启动成功:
在这里插入图片描述
使用脚本创建集群(分配槽)
找到集群脚本,在usr/local/src/redis/src/redis-trib.rb(根据自身安装路径查看) 要安装Ruby的环境【不推荐】
使用docker 下载redis-trib的镜像运行【推荐】
在这里插入图片描述
9.安装docker(有docker的可以跳过)

安装Docker命令
yum install docker

启动docker命令

systemctl start docker

10.编辑下载地址(为了更快的下载),重新启动docker并下载镜像
在这里插入图片描述
编辑下载地址的内容如下:
{ “registry-mirrors”: [“https://32xw0apq.mirror.aliyuncs.com”] }

11.在接着执行以下步骤,查看到已经下载成功的镜像:
在这里插入图片描述
第二个红框的内容(192.168.31.74这个是自己虚拟机的ip,后面7000是6个redis的端口号):

docker run -it --net host inem0o/redis-trib create --replicas 1 192.168.31.74:7000 192.168.31.74:7001 192.168.31.74:7002 192.168.31.74:7003 192.168.31.74:7004 192.168.31.74:7005

12.成功后连接redis(注意这里和以前启动的不一样的地方是在-h前面有个-c)
在这里插入图片描述
13.测试
在这里插入图片描述
如上测试成功,name算出槽值是5798,由上面的分配规则可知(一共16384个哈希槽),属于第二个主机7001,所以被转发到7001,model算出是11204,顾被转发到7002里面。

总结

到此集群搭建完成。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值