当前位置:网站首页>Redis-集群模式(主从复制模式,哨兵模式,集群化模式)
Redis-集群模式(主从复制模式,哨兵模式,集群化模式)
2022-08-02 05:04:00 【Have_MonkeyG】
一、一主多从模式(主从模式)
1.主从模式的概念
一个主节点,多个从节点,那么主节点可以负责:读操作,写操作。 从节点只能负责读操作,不能负责写操作。 这样就可以把读的压力从主节点分摊到从节点,以减少主节点的压力。
当主节点执行完写命令,会把数据同步到从节点。
2.搭建主从模式
原则:配从不配主。
(1)准备条件:
三个虚拟机,一主二从
为了节省内存我们可以在一台虚拟机上开启三个redis
(2)在redis目录下创建新的文件夹用于放置3个机器的配置文件
(3)将redis.conf配置文件复制3份放入创建的文件夹下,修改配置文件
(4)修改端口号以及rdb文件的名称我们以7001作为主节点,7002和7003作为子节点
其余两个按照各自的端口号修改
(5)三个同时启动redis服务
通过自己的配置文件启动
(6)进入客户端并查看自己的主从关系
7. 配置主从关系以7001为主7002和7003为从
slaveof 主节点所在IP 主节点的port
8.再次查看主从关系
9.测试
通过测试我们可以看出数据也同步在三个节点当中,主节点可以读和写。但是从节点只能读。
总结:
1. 如果主节点出现问题,子节点并不会去顶替上去成为主节点。
2. 如果增加一个新的从节点,新从节点会之前的数据同步过来。
二、哨兵模式
由于主从模式,主节点单机后,从节点不会自动上位。
增加一个哨兵服务,该哨兵时刻监控master,如果master挂了,哨兵会在从节点中选举一位为主节点【哨兵投票机制】。
1.修改配置
(1)找到redis目录下的sentinel.conf配置文件
(2)修改配置文件
#sentinel montor 主节点名字 主节点所在IP 主节点的端口号 哨兵认可数
sentinel monitor mymaster 127.0.0.1 6379 2
(3)启动哨兵
redis-sentinel sentinel.conf
(4)此时我们关闭主节点
会发现它选中子节点中的一个节点通过投票的机制选为父节点。
(5)再次启动之前的主节点
我们发现它成为了一个子节点
三、集群化模式(去中心化)
不管上面的主从模式还是哨兵模式,都无法解决单节点写操作的问题。如果这时写操作的并发比较高。这是可以实验集群化模式【去中心化模式】
原理:
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个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。
集群的搭建:
1.虚拟服务器的创建
三主三从:
6001,6002,6003 主节点
6004,6005,6006 子节点
2.在redis下创建cluster文件夹存放集群的配置文件
3.修改redis.conf配置文件
因为我们是在一台虚拟机上开启6个redis服务所以要修改的多,如果是在以后工作中只需要修改加粗的即可
Redis-1 防火墙--6379
bind 0.0.0.0 69行
port 6001 92行
daemonize yes 136行
dbfilename dump6001.rdb
# 打开aof 持久化
appendonly yes 700行
appendonly appendonly6001.aof
# 开启集群
cluster-enabled yes 833行
# 集群的配置文件,该文件自动生成
cluster-config-file nodes-6001.conf 841行
# 集群的超时时间
cluster-node-timeout 15000 847行
4.将6个修改号的配置文件放入新建的文件夹
5.启动服务器
将六个服务器全部启动
6.分配槽
redis-cli --cluster create --cluster-replicas 1 192.168.118.110:7000 192.168.118.110:7001 192.168.118.110:7002 192.168.118.111:7003 192.168.118.111:7004 192.168.118.111:7005
将ip跟端口改为你自己设定的就行
注意:一定要保证每个节点都没有数据。
7.测试
redis-cli ==-c== -h 192.168.40.199 -p 6001
可以把写操作均摊到不同的节点上,减轻了单个主节点的压力。
边栏推荐
- Grid布局介绍
- MYSQL unique constraint
- 认识CAN光纤转换器的光纤接口和配套光纤线缆
- MySQL如何对SQL做prepare预处理(解决IN查询SQL预处理仅能查询出一条记录的问题)
- go项目的打包部署
- MySQL String Concatenation - Various String Concatenation Practical Cases
- Android Studio 实现登录注册-源代码 (连接MySql数据库)
- 腾讯注册中心演进及性能优化实践
- interrupt()、interrupted()和isInterrupted()你真的懂了吗
- [QNX Hypervisor 2.2用户手册]9.17 tolerance
猜你喜欢
随机推荐
ORA-04044:此处不允许过程、函数、程序包或类型,系统分析与解决
2021年软件测试面试题大全
IOT物联网概述及应用层架构入门篇
AMQP协议详解
CubeSat Light-1
"Digital reconstruction of the system, getting the CEO is the first step"
Android studio connects to MySQL and completes simple login and registration functions
软件测试分析流程及输出项包括哪些内容?
Go语学习笔记 - 处理超时问题 - Context使用 从零开始Go语言
el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
数学建模学习笔记:层次分析法(AHP)
MySQL 8.0.28 version installation and configuration method graphic tutorial
简道云-灵活易用的应用搭建平台
matlab simulink 飞机飞行状态控制
Matlab paper illustration drawing template No. 41 - bubble chart (bubblechart)
MySQL大批量造数据
MobaXsterm如何使用
The practice of alibaba, data synchronization component canal
Mycat2.0搭建教程
【HCIE】NO.30 OSPFv3的基本配置