分布式缓存(3)—Redis分片集群

分片集群

  有了主从、有了哨兵,解决了高可用和高并发读的问题。但是,即便如此,仍然有两个问题没有解决。

  第一,是海量数据的储存问题

  第二,是高并发写的问题

  那么,使用分片集群,便可以解决这样的两个问题。

  对于一个分片集群来说,集群中有多个master,每个master保存不一样的数据,对于每个master来说,有多个slave节点。

  master之间可以通过ping来监测彼此的健康状态。

  客户端发出的对于redis的请求,可以访问集群的任意节点,最终,都会被转发到正确的节点中去。

  对于一个分片集群来说,一个节点就是一个运行在集群模式下的Redis服务器。启动Redis服务器时,通过判断cluster-enabled选项,选择是否开启集群模式。(Yes开启集群,No则单机模式普通服务器)

#开启redis的集群模式
cluster-enabled yes

#集群内节点之间支持最长响应时间
cluster-node-timeout 15000

#配置集群模式下的配置文件
cluster-config-file nodes-6379.conf

  每个节点使用的端口各不相同,可以设置。每个节点最开始可以看做一个只有自己节点的集群,节点间通过命令相互握手,组建集群。

  握手命令如下:

# 和ip为127.0.0.1,端口为6378的节点进行握手
cluster meet 127.0.0.1:6378

# 显示当前集群的节点信息
cluster nodes

分片集群的搭建与使用

  此处还是采用docker的方式来进行演示分片集群的搭建与使用。

  首先,还是使用redis:bullseye的镜像。

docker pull redis:bullseye

  而后,于此以不挂载的方式进行搭建,挂载的方式其实也是一样的。

  第一步是创建一个network网络:

docker network create redis-cluster-network

# 可以查看network的列表
docker network ls

  Redis分片集群至少需要6个Redis实例,3个为主节点,3个为副本节点。

docker run -d --name redis-node-1 --net redis-cluster-network redis:bullseye redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 7001
docker run -d --name redis-node-2 --net redis-cluster-network redis:bullseye redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 7002
docker run -d --name redis-node-3 --net redis-cluster-network redis:bullseye redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 7003
docker run -d --name redis-node-4 --net redis-cluster-network redis:bullseye redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 7004
docker run -d --name redis-node-5 --net redis-cluster-network redis:bullseye redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 7005
docker run -d --name redis-node-6 --net redis-cluster-network redis:bullseye redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 7006

  接着可以检查redis的实例是否全部启动成功:

docker ps

  随后,集群需要使用IP地址来进行节点间通信,可以使用以下命令来获得每个Redis实例的IP地址:

docker ins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值