Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式
前言
前一篇中,我们讲解了Redis主从的搭建方式,其实很简单呐有木有,都是配置,连句代码都没有,是不是感觉高估了Redis主从的搭建方式?哈哈,没关系,跟着博主,包你全会。今天我们的主题是哨兵,没错,就是哨兵!有了Redis,要是没有哨兵,那真是太可惜了,哨兵是很神圣的一种重要的监测工具,有了哨兵,在Redis主节点出现问题的时候,哨兵就会预警,并选举出新的master,这样,Redis的工作就不会停掉,对于服务器来说非常重要。
简单哨兵模式
基础知识推荐
关于哨兵的一些概念,博主看到了不少优秀的作品,为了防止长篇大论的写重复的内容,就在这里分享给大家。
Redis中的哨兵模式 - 简书
怎么实现Redis的高可用?(主从、哨兵、集群) - 知乎
手把手教你配置Redis主从复制(含详细图文)
这几篇博客都是非常优秀的博客,读完之后,相信一定会让大家受益匪浅,下面就是实战阶段,大家跟着一起动手吧。
Redis主从加码
我们上一篇是Redis主从,一主一从,相信大家都还记得吧,现在,要求大家再给master节点增加一个slave,应该很简单吧。可以自己试试,也可以跟着博主一起来操作。
我们上一篇的文件夹是这样的:

下面动动我们的小手,来增加一个新的slave,配置如下:
port:6382
daemonize yes
pidfile /var/run/redis_6382.pid
logfile "6382.log"
slaveof localhost 6380
是不是很简单,几乎和另一个slave一样,测试嘛,就免了,基本也没改啥,不用测都知道一定可以,小伙伴可以自行测试下配置是否正确。
配置哨兵配置文件
首先,我们会在src文件中看到一个redis- sentinel文件,这就是哨兵的启动文件了:

接着,要配置的文件名字叫sentinel.conf,我们可以在redis目录下找到这个文件:

由于博主安装Redis的时候安装到了src,所以大家才会看到博主在src操作这些文件,正常来说,你安装在redis目录下也是可以的,下一步,我们还是把sentinel.conf复制到src目录下:

接着来修改此文件中的配置,需要修改的配置如下:
#配置端口
port 26379
# 设置为守护进程模式,可先注释,看投票选主的过程
#daemonize yes
#日志文件名
logfile "redis_sentinel.log"
#存放备份文件以及日志等文件的目录
dir "/opt/redis/data"
# redis_sentinel表示hostname,自己随意取名
# 数字1表示当主机宕机后,在从机中进行投票选主,票数大于1的晋升为主机
sentinel monitor redis_sentinel 127.0.0.1 6380 1
#30秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 30000
#故障转移后重新主从复制,1表示串行,>1并行
sentinel parallel-syncs mymaster 1
#故障转移三分钟内没有完成,认为转移失败
sentinel failover-timeout mymaster 180000
有些参数是默认就有的,其实需要改的就俩:
# 设置为守护进程模式,可先注释,看投票选主的过程
#daemonize yes
# redis_sentinel表示hostname,自己随意取名
# 数字1表示当主机宕机后,在从机中进行投票选主,票数大于1的晋升为主机(因为我们现在有两个从节点)
sentinel monitor redis_sentinel 127.0.0.1 6380 1
虽然默认守护进程都没有,也就只能算一个了,像上面那些文件在启动的时候会自动生成的,我们目前是教学阶段,可以不用管。
启动Redis
进入启动文件目录:
cd Desktop/JAVATOOL/redis/src
大家写自己的路径。
启动主Redis:
redis-server redis_master.conf
启动两个从Redis节点:
redis-server redis_slave0.conf
redis-server redis_slave1.conf
查看redis启动状态:
ps -ef | grep redis

可以看到三个Redis服务都已经启动起来了,测试博主就不贴出来了,大家自行测试就好。
启动哨兵
启动哨兵:
redis-sentinel sentinel.conf
此时博主电脑弹了一个允许使用网络的窗口,手滑直接点了,没截图,算了。
看运行的情况:

哨兵已经成功启动了,可以看到主从的关系了,一主,二从,说明我们配置的暂时没问题,要确认哨兵能不能正常工作,还要看master宕机后能不能自动选主。
测试哨兵是否配置成功
为了看哨兵是否能正常工作,选出新的mater,我们需要手动干掉redis的master节点,通过
ps -ef | grep redis
新开一个终端,查看几个节点~这应该是进程号:

通过kill命令杀死主节点:
kill -9 74840

这里有一整个投票选主的过程,目前的主节点为6381,从节点为6382,6380也成了从节点,但是其已经关闭了。
重新开启原6380主节点
开启原主节点:
redis-server redis_master.conf

新输出两句,原主节点被转为了新主节点6381的从节点,我们打开6380的配置文件看看:

在文档最后找到了自动添加的从节点配置。到此,我们的测试就完全结束了,单节点哨兵监控多节点主从Redis的配置就成功了。
杀死全部进程

然后可以看到这边的输出,大家自己看看,找找感觉,理解一下:

结语
虽然这只是一篇单节点哨兵的应用,但是对于一些初创型公司或者一些小型起步项目来说已经足够了,并不是所有的公司都会集群和微服务都搞的很棒,毕竟这玩意儿可是要花钱的,项目多的时候,一年随随便便服务器花出去几百万都是正常,所以也不要指望所有公司都上集群。如果对集群有需求,没关系,咱们下篇就来讲讲哨兵的集群怎么玩。
相关文章:
Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式
前言 前一篇中,我们讲解了Redis主从的搭建方式,其实很简单呐有木有,都是配置,连句代码都没有,是不是感觉高估了Redis主从的搭建方式?哈哈,没关系,跟着博主,包你全会。今…...
Java的Atomic原子类
Java SDK 并发包里提供了丰富的原子类,我们可以将其分为五个类别,这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类。 对基本数据类型的变量值进行原子更新;对对象变量的指向进行原子更新;对数组里面的…...
离线语音控制新方案,NRK3303语音识别芯片在智能风扇的应用
随着科技的不断发展,智能家居已经成为人们日常生活中不可或缺的一部分,涌现出越来越多的智能设备,如智能门锁、智能灯泡、智能冰箱等,这些设备为人们的生活带来了更多的便利和创新。其中作为常见的风扇通过添加智能语音控制功能&a…...
在树莓派3B+上安装Pytorch1.7
在树莓派3B上安装Pytorch1.7(应该是最简单的方法了)_package libopenblas-dev has no installation cand_Chauncey_Wang的博客-CSDN博客由于项目要求,我需要在树莓派上安装pytorch这就有几个问题,首先吧,咱们和外面之间有一道长城,…...
Java性能权威指南-总结4
Java性能权威指南-总结4 Java性能调优工具箱操作系统的工具和分析CPU运行队列磁盘使用率网络使用率 Java监控工具基本的VM信息 Java性能调优工具箱 操作系统的工具和分析 CPU运行队列 快速小结 检查应用性能时,首先应该审查CPU时间。优化代码的目的是提升而不是…...
c语言全局变量和局部变量问题汇总
✅作者简介:嵌入式领域优质创作者,博客专家 ✨个人主页:咸鱼弟 🔥系列专栏:单片机设计专栏 📃推荐一款求职面试、刷题神器👉注册免费刷题 1、关键字static的作用是什么? 定义静态变…...
14.3:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中字典序最小的结果
给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中字典序最小的结果 贪心写法 首先注意的一点是:如果两个字符串的长度相同,“abc”,“abd”,肯定是“abc”的字典序最…...
C++ 项目实战:跨平台的文件与视频压缩解压工具的设计与实现
C实战:跨平台文件与视频压缩解压工具的设计与实现 一、引言(Introduction)1.1 项目背景与目标1.2 技术选型:C、FFmpeg、libarchive、libzip、QtCFFmpeglibarchivelibzipQt 二、设计思路与框架(Design Philosophy and F…...
C和指针(二)数据
数据类型 1,C语言中仅有四种基本数据类型——整型、浮点型、指针、聚合类型(数组、结构等)。 2,整型包括字符、短整型、整型、长整型,且可以分为有符号和无符号两种版本。 1)长整型至少和整型一样长&#…...
PyTorch基础学习(一)
一.简介 PyTorch是一个基于Python的开源机器学习框架,它提供了丰富的工具和接口,用于构建和训练深度学习模型。PyTorch的主要特点包括: 动态计算图: PyTorch使用动态计算图,这意味着在模型构建过程中可以实时地进行计…...
chatgpt赋能python:Python代做:让您的网站更友好的SEO利器
Python代做:让您的网站更友好的SEO利器 如果您是一位网站管理员或者SEO工程师,您一定知道SEO对于网站的重要性。那么在SEO中,Python代做可以为您提供什么?在本文中,我们将通过介绍Python代做的技术和方法,…...
2022年都快结束了,还有人不会安卓录屏?在安卓上录制屏幕的的实现方式
前言 在我之前的文章 《以不同的形式在安卓中创建GIF动图》 中,我挖了一个坑,可以通过录制屏幕后转为 GIF 的方式来创建 GIF。只是当时我只是提了这么一个思路,并没有给出录屏的方式,所以本文的内容就是教大家如何通过调用系统 A…...
px rem em rpx 区别 用法
任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em16px。那么12px0.75em,10px0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size62.5%,这就使em值变为 16px*62.5%10px, 这样12px1.2em, 10px1em, 也就是说只需要…...
忆享聚焦|ChatGPT、AI、网络数字、游戏……近期热点资讯一览
“忆享聚焦”栏目第十四期来啦!本栏目汇集近期互联网最新资讯,聚焦前沿科技,关注行业发展动态,筛选高质量讯息,拓宽用户视野,让您以最低的时间成本获取最有价值的行业资讯。 目录 行业资讯 1.科技部部长王志…...
[Daimayuan] 树(C++,动态规划,01背包方案数)
有一棵 n n n 个节点的以 1 1 1 号点为根的有根树。现在可以对这棵树进行若干次操作,每一次操作可以选择树上的一个点然后删掉连接这个点和它的儿子的所有边。 现在我们想知道对于每一个 k k k ( 1 ≤ k ≤ n 1≤k≤n 1≤k≤n),最少需要多少次操作能…...
如何选择源代码加密软件
(SDC沙盒)和DLP、文档加密、云桌面等,其优缺点做客观比较如下: 比较内容安全容器(SDC沙盒)DLP文档加密云桌面代表厂家*信达卖咖啡、赛门贴科亿*通、IP噶德、*盾、*途四杰、深*服设计理念以隔离容器加准入技术为基础,构…...
TO-B类软件产品差异化
产品差异化,是在市场众多同质化产品中,突出自身产品亮点的重要方式。对于客户来讲其选择是多种多样的,与其花费大量的时间研究每一家产品的特点,还不如直接选择品牌更大、价格更低的产品来的直接,因此显而易见的突出产…...
设计模式之美-实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
领域驱动设计(Domain Driven Design,简称DDD)盛行之后,这种基于贫血模型的传统的开发模式就更加被人诟病。而基于充血模型的DDD开发模式越来越被人提倡。所以,我打算用两节课的时间,结合一个虚拟钱包系统的…...
ChatGPT如何训练自己的模型
ChatGPT是一种自然语言处理模型,它的任务是生成自然流畅的对话。如果想要训练自己的ChatGPT模型,需要进行大量的数据收集、预处理、配置训练环境、模型训练、模型评估等过程。本文将详细介绍这些过程,帮助读者了解如何训练一个高品质的ChatGP…...
springboot使用线程池的实际应用(一)
在实际Spring Boot项目中,我们可以使用Java的原生多线程或者使用Spring自带的线程池进行多线程编程。多线程的好处在于能够提高应用程序的运行效率,特别是在某些计算密集型场景下。以下是一些使用多线程的典型场景: 并发处理请求:…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
