赞
踩
主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:
海量数据存储问题,单个Redis节点对于数据的存储量是有上限的
高并发写的问题,高并发读的问题我们可以用主从集群来解决,那高并发写的问题又该怎样解决呢
针对上述问题,我们可以搭建Redis的分片集群,如图所示:
Redis的分片集群具有以下特征:
接下来我们可以动手来搭建一个Redis分片集群
分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下:
这里我们会在同一台虚拟机中开启6个redis实例,模拟分片集群,信息如下:
IP | PORT | 角色 |
---|---|---|
192.168.211.100 | 7001 | master |
192.168.211.100 | 7002 | master |
192.168.211.100 | 7003 | master |
192.168.211.100 | 8001 | slave |
192.168.211.100 | 8002 | slave |
192.168.211.100 | 8003 | slave |
这里我的redis安装目录为/usr/local/redis-6.2.6,以下操作将以此目录进行参考,额外需要注意的是,以下操作都是在redis没有设置密码的情况下进行的,如果你的redis设置了密码,那么按照以下步骤进行就会出问题。
1)创建出7001、7002、7003、8001、8002、8003目录
# 进入/local目录
cd /usr/local
# 创建目录
mkdir 7001 7002 7003 8001 8002 8003
2)在/usr/local下准备一个新的redis.conf文件,内容如下:
port 6379 # 开启集群功能 cluster-enabled yes # 集群的配置文件名称,不需要我们创建,由redis自己维护 cluster-config-file /usr/local/6379/nodes.conf # 节点心跳失败的超时时间 cluster-node-timeout 5000 # 持久化文件存放目录 dir /usr/local/6379 # 绑定地址 bind 0.0.0.0 # 让redis后台运行 daemonize yes # 注册的实例ip replica-announce-ip 192.168.211.100 # 保护模式 protected-mode no # 数据库数量 databases 1 # 日志 logfile /usr/local/6379/run.log
3)将这个文件拷贝到每个目录下:
# 进入/local目录
cd /usr/local
# 执行拷贝
echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf
4)修改每个目录下的redis.conf,将其中的6379修改为与所在目录一致:
# 进入/local目录
cd /usr/local
# 修改配置文件
printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{
} -t sed -i 's/6379/{}/g' {
}/redis.conf
因为已经配置了后台启动模式,所以可以直接启动服务:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。