搭建Redis分片集群

说明:单体Redis有许多问题,可通过Redis数据持久化、搭建主从集群、哨兵和Redis分片集群解决单体Redis数据丢失、高并发、数据恢复和海量数据存储的问题。前三个参考http://t.csdn.cn/6pp2F、http://t.csdn.cn/o9u0S,本问介绍如何创建Redis分片集群。

结构图

创建

如上图所示,创建六个Redis实例,三个master(端口分别为:7001、7002、7003),三个slave(端口分别为:8001、8002、8003)

第一步:创建目录

切换到/tmp/essay目录下,创建六个文件夹,文件夹名为端口号

powershell 复制代码
mkdir 7001 7002 7003 8001 8002 8003

第二步:创建配置文件

在当前目录下创建redis.conf文件,内容如下,注意需要修改对应的IP地址和路径

port 6379
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file /tmp/essay/6379/nodes.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 持久化文件存放目录
dir /tmp/essay/6379
# 绑定地址
bind 0.0.0.0
# 让redis后台运行
daemonize yes
# 注册的实例ip
replica-announce-ip IP地址
# 保护模式
protected-mode no
# 数据库数量
databases 1
# 日志
logfile /tmp/essay/6379/run.log

第三步:拷贝配置文件

将配置文件拷贝到各个目录下

powershell 复制代码
echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf

第四步:修改对应配置

将各个文件夹内配置内容中的6379修改为对应的端口;

powershell 复制代码
printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t sed -i 's/6379/{}/g' {}/redis.conf

第五步:启动

启动所有redis

powershell 复制代码
printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-server {}/redis.conf

查看进程状态,可以看到redis服务已经全部打开

第六步:集群关联

输入以下命令(需要redis5.0以后才可以),建立关系,7001-7003为master,8001-8003为前面对应的slave;

powershell 复制代码
redis-cli --cluster create --cluster-replicas 1 IP地址:7001 IP地址:7002 IP地址:7003 IP地址:8001 IP地址:8002 IP地址:8003

敲"yes",继续

完成

第七步:测试

输入下面的命令,查看集群状态

powershell 复制代码
redis-cli -p 7001 cluster nodes

可以看到分片集群已经搭建成功,master节点后面有卡槽范围,一个节点分别有5461个卡槽

进入7001Redis客户端操作,需要注意集群操作需要加-c

powershell 复制代码
redis-cli -c -p 7001

随便添加两个值,可以看到前面的端口号发生了变化,说明数据随机存储在三个master对应的卡槽中,这样就解决了海量数据的存储问题。

总结

通过搭建Redis分片集群,可解决单机Redis的海量数据存储问题。另外,Redis分片集群是Redis集群演变的最终形态,Redis分片集群同样具备主从集群结构、Redis哨兵结构所拥有的优点,就是说Redis分片集群可以完全解决Redis单机的"四大问题"。

相关推荐
Rookie也要加油16 分钟前
01_SQLite
数据库·sqlite
liuxin3344556621 分钟前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
看山还是山,看水还是。1 小时前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec1 小时前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa1 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke1 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D1 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录2 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.3 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
程序猿小D3 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa