Redis的主从、哨兵、集群模式的概念及搭建步骤

主从复制

        主从模式也叫主从复制,主是主服务器,从是从服务器,主服务器(master )的数据如果更新了 也会同步到从服务器(slave),一个主服务器可以搭配很多个从服务器,主服务器负责写入 从服务器只能读取 不能写入
主从模式的作用:

  1. 数据备份:无论哪一台服务器宕机 数据都有备份 保证redis可用性高
  2. 扩展性能:搭建了很多服务器,提高服务器容量和带宽
  3. 读写分离:主负责写入 从负责读取

搭建主从模式步骤:

案例:搭建一个主服务器和两台从服务器
1.创建一个目录,保存主从模式的配置文件(有几个节点配置几个配置文件)
mkdir xxx
2.复制几份配置文件
cp redis,conf xxx/redis-1.conf
cp redis,conf xxx/redis-2.conf
cp redis,conf xxx/redis-3.conf3.分别修改每个配置文件(类似于之前的配置)
ip地址 端口号 PID文件 log文件 rdb文件 不要冲突
注:如果是从服务器 需要添加一个配置
replicaof 主服务器的ip地址 端口号4.开启redis服务
redis-server redis-7000.conf
redis-server redis-7001.conf
redis-server redis-7002.conf5.查看进程是否有三个redis节点
ps -ef | grep redis6.查看主从信息是否正确 1个主两个从
redis-cli -h ip地址 -p 端口 info replication结果:如果从节点宕机了 对其他节点没有任何影响如果主节点宕机了 对数据备份没有影响 但是不能写入

哨兵模式

        主从模式的缺点:如果主节点宕机了需要人工介入切换主节点,手动通过命令将其他的从节点升为主节点 slaveof new master 这是运维人员的工作。

        所以redis2.8以上引入哨兵模式 哨兵模式就是优化版的主从模式 唯一区别就是添加一个新的角色叫做哨兵,可以监控主和从节点的可用性 如果从宕机 哨兵不管 如果主宕机 哨兵会自动投票选择哪个从节点升为主节点。

搭建哨兵模式步骤:

案例:1个主 1个从 3个哨兵1.创建一个新目录sentinel保存配置文件(5个文件)2.cp复制5个配置文件3.编写配置文件(主从配置文件跟原来一致)4.编写哨兵配置文件#哨兵端口号port 10000#设置为守护进程,则进程启动后会在后台运行daemonize yes#pid保存文件pidfile /var/run/10000.pid#日志文件logfile "/usr/local/redis-5.0.3/log/10000.log"#哨兵配置sentinel monitor mymaster 192.168.190.147 7000 2#设置多少秒失效则认为主节点宕机sentinel down-after-milliseconds mymaster 10000#设置故障转移 最多可以有多少个从节点升为主节点sentinel parallel-syncs mymaster 1#设置故障转移最大时间sentinel failover-timeout mymaster 60000#关闭保护机制protected-mode no5.开启redisredis-server redis-7000.confredis-server redis-7001.conf开启哨兵redis-sentinel 10000.confredis-sentinel 10001.confredis-sentinel 10002.conf6.查看进程是否存在ps -ef | grep redis

集群模式

        哨兵模式基本上可以解决大部分的问题,但是为了进一步的保证redis的高可用,哨兵模式也有自己的缺点,无法控制并发量 无法提升redis容量。
        哨兵模式容量:不能无限扩容,因为就是一台主节点
        哨兵模式并发量:一个redis主节点并发量大约是10万,也是不够的,所以redis推出了集群模式,集群最大可以增加到1000台节点,节点添加的越多,性能(容量和并发量)提高的也越多。
        如果主节点宕机了 从节点会自动升为主节点,redis集群一共会设计16384个数据分槽(slot),每个数据分槽会去管理一部分数据。这么多数据分槽平均分配给不同的redis节点,每个redis节点同时也会搭配很多从节点。

主节点选取步骤:

  1. 槽分配:当 Redis 集群启动时,初始情况下所有槽都未分配给任何节点。节点会通过集群协调器(Cluster Coordinator)进行槽的分配,确保每个槽都由集群中的某个节点负责。
  2. 主节点选举:在槽分配完成后,集群会自动进行主节点的选举。主节点的选取过程包括考虑节点的负载、连接质量、数据分布等因素。通常情况下,集群会选择那些负责的槽数量较少、负载较低的节点作为主节点。
  3. 故障转移:当主节点发生故障或不可用时,Redis Cluster 会通过自动故障转移(Automatic Failover)机制选择一个从节点升级为主节点,确保集群的高可用性。

搭建集群模式步骤:

案例:redis-cluster(6个节点(3主3从))
1.创建目录cluster
mkdir cluster2.拷贝需要的配置文件
cp redis.conf cluster/redis-xxx.conf3.编写集群的配置文件
编写ip
端口号
开启守护进程
关闭保护机制
进程id (PID文件)
rdb文件(持久化)#集群配置
#开启集群
cluster-enabled yes
#指定集群文件的配置文件名,首次启动会自动生成
cluster-config-file nodes-7000.conf
#如果一个主节点宕机了 如果从服务器没有可以故障恢复的节点 集群是否仍然可用
cluster-require-full-coverage no4.启动redis集群的所有节点(由于节点太多不要单个运行)
推荐使用脚本语言 编写脚本 批量运行
linux编写的脚本是xxx.sh 类似于window下的 xxx.bat*.sh编写语法
#!/bin/bash一般表示脚本语言开始
#!/bin/bash 
echo "开启redis集群"
#循环6次
for i in `seq 7000 7005`
do
redis-server redis-$i.conf ## $i表示获取i
echo $i"开启redis成功"
doneredis-server redis-7000.conf5.自动分配数据分槽 并且集群主从节点
不能换行 多个节点ip是空格相连
redis-cli --cluster create 192.168.190.147:7000 192.168.190.147:7001 192.168.190.147:7002 192.168.190.147:7003 192.168.190.147:7004 192.168.190.147:7005 --cluster-replicas 1注:如果配置集群时,出现is not empty是由于之前配置过,或者保存文件和原来的重名 删除data包 rdb文件 conf文件
重启redis服务器(先关闭 再开启)6.最后测试集群是否搭建成功
redis-cli -h ip地址 -p 端口号 进入客户端
cluster info查看集群信息7.测试java代码连接redis集群
以后搭建好集群只需要./start.sh启动redis就可以开启集群。

ps:以下是我整理的java面试资料,感兴趣的可以看看。最后,创作不易,觉得写得不错的可以点点关注!

链接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面试宝典》 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式】(四)设计模式之工厂模式

1. 工厂模式介绍 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式有三种实现方式: 简单工厂模式工厂方法模式抽象工厂模式 2. 工厂方…

前后端分离项目,如何解决跨域问题?

跨域问题是前后端分离项目中非常常见的一个问题,举例来说,编程猫学习网站的前端服务跑在 8080 端口下,后端服务跑在 9002 端口下,那么前端在请求后端接口的时候就会出现跨域问题。 403 Forbidden 是HTTP协议中的一个状态码&#x…

华容道问题求解_详细设计(五)之hash值和回放功能

(续上文) 布局的hash 值计算 笔者也参考了之前的一些文章,很多文章提到了怎么节省存贮空间来查找最优解,这不是笔者的目的。笔者的目的比较单一,就是找到最优解就行了。因此并没有在存贮上面进行过多的优化&#xff…

Linux系统adb调试小米手机调试不成功出现Exception occurred while executing ‘put‘:问题解决

参考文章:执行android settings命令报错原因Exception occurred while executing put: java.lang.SecurityException: Pe... - 简书 (jianshu.com) 解决Android U无法通过adb安装应用(Caller has no access to session -1)的问题_performing streamed install-CSDN…

P3405 [USACO16DEC] Cities and States S题解

题目 Farmer John有若干头奶牛。为了训练奶牛们的智力,Farmer John在谷仓的墙上放了一张美国地图。地图上表明了每个城市及其所在州的代码(前两位大写字母)。 由于奶牛在谷仓里花了很多时间看这张地图,他们开始注意到一些奇怪的…

消息队列 MQ

文章目录 1. MQ 相关概念1.1 什么是 MQ1.2 为什么要用 MQ1.3 MQ 分类1.4 MQ 的选择 1. MQ 相关概念 1.1 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已&#x…

【 React 】state和props有什么区别?

1. state 一个组件的显示形态可以由数据状态和外部参数所决定,而数据状态就是state,一般在constructor中初始化 当需要修改里面的值的状态需要通过调用setState来改变,从而达到更新组件内部数据的作用,并且重新调用组件render方法…

阿里云DSW做AI绘画时的显卡选择A10?V100?

V100是Volta架构,A10是Ampere架构,架构上讲A10先进点,其实只是制程区别,用起来没区别。 V100是HBM的内存读取,带宽大,但是DDR5的。 二块卡都是全精度为主的算力卡,半精度优势不明显。 需要用…

uniapp 开发app,如何使用模拟器

1、开发app ,设置模拟器 (uniapp 如何设置模拟器) https://blog.csdn.net/sweetsoft/article/details/130727169 2、运行到模拟器 注意:1、模拟器所在的位置:“D:\Program Files\Nox\bin”,在该文件夹下找…

FPN(Feature Pyramid Network)

参考: 【目标检测】FPN(Feature Pyramid Network) - 知乎 Feature pyramid network是CVPR2017年的一篇文章,它在目标检测中融入了特征金字塔,提高了目标检测的准确率,尤其体现在小物体的检测上。 1. 动机(Motivation) 识别不同…

【三两波折】char *foo[]和char(*foo)[]有何不同?

1、先谈优先级 最高级别 —— 有四个,他们并不像运算符: []数组下标左到右结合()用于(表达式) or 函数名(形参表)左到右结合.读取结构体成员左到右结合->读取结构体成员(通过指针)左到右结合 第二级别…

【读书笔记】针对ICS的ATTCK矩阵详解(一)

Techniques - ICS | MITRE ATT&CKhttps://attack.mitre.org/techniques/ics/ 一、初始访问(Initial Access) 该阶段:攻击者正在尝试进入ICS环境。 初始访问包括攻击者可能用作入口向量,从而可以在 ICS 环境中获得初始立足点的…

pytorch实现分割模型TransUNet

TransUNet是一个非常经典的图像分割模型。该模型出现在Transformer引入图像领域的早期,所以结构比较简单,但是实际上效果却比很多后续花哨的模型更好。所以有必要捋一遍pytorch实现TransUNet的整体流程。 首先,按照惯例,先看一下…

逼疯快递员的送货上门,谁来背锅?

快递上门的问题近几年来一直争论不休。 最近,随着新修订的《快递市场管理办法》正式实施,这个话题又成为了焦点。 消费者希望快递能够送上门省去麻烦,快递员希望统一送到代收点提高效率。 是消费者要求太高?快递员太过怠慢&…

LightDB24.1插件oracle_fdw需要支持oracle.date和oracle.varchar2类型

背景介绍 oracle.date和oracle.varchar2是LightDB中新增的类型,对应于Oracle数据库的date和varchar2类型。oracle_fdw是第三方插件,所以不支持oracle.date和oracle.varchar2类型。从LightDB24.1版本开始,oracle_fdw插件开始支持oracle.date和…

理解自相关图AC和偏自相关图PAC Plots

when we talk about the time-series data, many factors affect the time series, but the only thing that affects the lagged version of the variable is the time series data itself. by Yugesh Verma 时序数据按照时间点的先后顺序进行排列,变化是在邻近的时间段之间发…

2.1基本算法之枚举1978:生理周期

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高…

[金三银四] 系统调用相关

2.36 系统调用的详细流程 Linux 在x86上的系统调用通过 int 0x80 实现,用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是: 应用程序调用库函数(API);API 将系统调用号存入寄存器(EAX&#…

CKA备考攻略:掌握Pod日志收集,事半功倍的秘诀!

往期精彩文章 : 提升CKA考试胜算:一文带你全面了解RBAC权限控制!揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?CKA认证必备:掌握k8s网络策略的关键要点提高CKA认证成功率,CKA真题中的节点维…

稳定性三——wachdog机制与分析发方法

文章目录 1. 介绍2 watchdog 机制2.1 初始化2.2 添加Watchdog监测对象2.3 监测机制 3 问题分析3.1 日志分类3.2 定位3.3 场景还原 4. 实例分析5. 总结 1. 介绍 最早引入Watchdog是在单片机系统中,由于单片机的工作环境容易受到外界磁场的干扰,导致程序“…