Java 实现访问Redis哨兵(六)

news2024/11/15 11:04:25

 目录

一、哨兵和复制

1.1 哨兵(sentinal)

1.Redis哨兵主要功能

2.Redis哨兵的高可用

1.2 Redis复制(Replication)

1.数据复制原理(执行步骤)

1.3 Redis 主从复制、哨兵和集群这三个有什么区别

二、Java访问哨兵实现


一、哨兵和复制


谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?

这时候就需要哨兵和复制。

哨兵(Sentinel): 可以管理多个Redis 服务器,它提供了监控,提醒以

及自动的故障转移的功能。

复制(Replication) :则是负责让一个Redis 服务器可以配备多个备份的

服务器。

Redis正是利用这两个功能来保证Redis的高可用。

1.1 哨兵(sentinal)

哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复

制出现故障时需要人为干预的问题。

1.Redis哨兵主要功能

(1)集群监控 :负责监控Redis master和 slave 进程是否正常工作

(2)消息通知:如果某个Redis 实例有故障,那么哨兵负责发送消息作为报警

通知给管理员

(3)故障转移:如果master node挂掉了,会自动转移到slave node上

(4)配置中心 :如果故障转移发生了,通知client 客户端新的master 地址

2.Redis哨兵的高可用

原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。

哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。同时哨兵节点之间也互相通信,交换对主从节点的监控状况。每隔1秒每个哨兵会向整个集群: Master 主服务器+Slave从服务器+其他Sentinel (哨兵)进程,发送一次 ping 命令做一次心跳检测。

哨兵用来判断节点是否正常的重要依据,涉及两个新的概念:主观下线和客观下线。

  • 主观下线: 一个哨兵节点判定主节点down 掉是主观下线。
  • 客观下线:只有半数哨兵节点都主观判定主节点down 掉,此时多个哨兵节点交换主观判定结果,才会判定主节点客观下线。

原理:基本上哪个哨兵节点最先判断出这个主节点客观下线,就会在各个哨兵 节点中发起投票机制Raft算法(选举算法),最终被投为领导者的哨兵节点完成主从自动化切换的过程。

1.2 Redis复制(Replication)

Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上,通 过复制,实现Redis 的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。

1.数据复制原理(执行步骤)

从数据库向主数据库发送sync (数据同步)命令。

主数据库接收同步命令后,会保存快照,创建一个RDB 文件。

当主数据库执行完保持快照后,会向从数据库发送RDB 文件,而从数据库会

接收并载入该文件。

主数据库将缓冲区的所有写命令发给从服务器执行。

以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发

送给从数据库。

注意:主从断开重连后会根据断开之前最新的命令偏移量进行增量复制。

reidis-slave节点运行日志:

24268:S 24 Apr 2023 15:19:49.735 * Ready to accept connections
24268:S 24 Apr 2023 15:19:49.735 * Connecting to MASTER 192.168.2.212:6379
24268:S 24 Apr 2023 15:19:49.735 * MASTER <-> REPLICA sync started
24268:S 24 Apr 2023 15:19:49.736 * Non blocking connect for SYNC fired the event.
24268:S 24 Apr 2023 15:19:49.736 * Master replied to PING, replication can continue...
24268:S 24 Apr 2023 15:19:49.737 * Partial resynchronization not possible (no cached master)
24268:S 24 Apr 2023 15:19:49.738 * Full resync from master: 95bd682b26515c903d9dca88bf171e97f30da682:0
24268:S 24 Apr 2023 15:19:49.760 * MASTER <-> REPLICA sync: receiving 175 bytes from master to disk
24268:S 24 Apr 2023 15:19:49.760 * MASTER <-> REPLICA sync: Flushing old data
24268:S 24 Apr 2023 15:19:49.761 * MASTER <-> REPLICA sync: Loading DB in memory
24268:S 24 Apr 2023 15:19:49.762 * Loading RDB produced by version 6.2.6
24268:S 24 Apr 2023 15:19:49.762 * RDB age 0 seconds
24268:S 24 Apr 2023 15:19:49.762 * RDB memory usage when created 1.91 Mb
24268:S 24 Apr 2023 15:19:49.762 # Done loading RDB, keys loaded: 0, keys expired: 0.
24268:S 24 Apr 2023 15:19:49.762 * MASTER <-> REPLICA sync: Finished with success
24268:S 24 Apr 2023 15:19:49.763 * Background append only file rewriting started by pid 24272
24268:S 24 Apr 2023 15:19:49.787 * AOF rewrite child asks to stop sending diffs.
24272:C 24 Apr 2023 15:19:49.788 * Parent agreed to stop sending diffs. Finalizing AOF...
24272:C 24 Apr 2023 15:19:49.788 * Concatenating 0.00 MB of AOF diff received from parent.
24272:C 24 Apr 2023 15:19:49.788 * SYNC append only file rewrite performed
24272:C 24 Apr 2023 15:19:49.789 * AOF rewrite: 0 MB of memory used by copy-on-write
24268:S 24 Apr 2023 15:19:49.836 * Background AOF rewrite terminated with success
24268:S 24 Apr 2023 15:19:49.836 * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB)
24268:S 24 Apr 2023 15:19:49.837 * Background AOF rewrite finished successfully

1.3 Redis 主从复制、哨兵和集群这三个有什么区别

  • 主从模式 :读写分离,备份, 一个Master 可以有多个Slaves。
  • 哨兵sentinel: 监控,自动转移,哨兵发现主服务器挂了后,就会从slave 中

重新选举一个主服务器。

  • 集群 :为了解决单机Redis 容量有限的问题,将数据按一定的规则分配到多台机器,内存/QPS 不受限于单机,可受益于分布式集群高扩展性。哨兵作用于高可用,集群提高并发量

二、Java访问哨兵实现


哨兵搭建: s​​​​​​​Redis 6.x哨兵模式部署(五)_开着拖拉机回家的博客-CSDN博客

pom.xml


        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

代码示例 

package com.kangna.redi;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/*********************************************************************
 *
 *@Author kangll
 *@Date 2023/4/25 15:11                                  
 *@Desc  Java 连接 Redis
 *
 ********************************************************************/
public class RedisConn {
    public static void main(String[] args) {
        //连接池配置
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(10);
        jedisPoolConfig.setMaxIdle(5);
        jedisPoolConfig.setMinIdle(5);
//哨兵信息
        Set<String> sentinels = new HashSet<String>(Arrays.asList(
                "192.168.2.211:26379",
                "192.168.2.212:26379",
                "192.168.2.213:26379"
        ));
        //创建连接池
        //mymaster是我们配置给哨兵的服务名称
        //sentinels是哨兵信息
        //jedisPoolConfig是连接池配置
        //abcdefg是连接Redis服务器的密码
        JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels, jedisPoolConfig, "123456");
        //获取客户端
        Jedis jedis = pool.getResource();
       //执行两个命令
        jedis.set("kafka", "kangll");
        String myvalue = jedis.get("kafka");
        //打印信息
        System.out.println(myvalue);

    }
}

 redis 命令行查询结果:

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

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

相关文章

【笔记】I2S协议是什么?

什么是I2S协议 I2S协议的介绍I2S协议有什么 这两天在搞ESP32的btAudio库&#xff0c;接触到了I2S&#xff0c;简单做个笔记。 I2S协议的介绍 I2S(Inter—IC Sound)总线, 又称集成电路内置音频总线&#xff0c;是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标…

2.QT窗口部件

类继承关系图 &#xff08;上面为Base类&#xff0c;下面为Derived类&#xff09; 窗口与子部件 窗口&#xff1a;没有父部件的部件&#xff0c;称为顶级部件 子部件&#xff1a;非窗口部件 新建空的qmake项目mywidget1 //mywidget1.proQT core gui greaterThan(QT_MAJO…

这是一个黑科技:C++爬虫~(文末报名C/C++领域新星计划)

目录 写在前面 完整代码 这里必看&#xff01;&#xff01; 写在最后 写在前面 现在所有人都知道万能的Python可以做机器学习&#xff0c;可以做人工智能&#xff0c;可以爬取各种小网站&#xff0c;但是你不知道&#xff0c;基于C的正则表达式早就能够爬取各种网络数据啦&a…

华为OD机试——对称美学(通过率只有8.51%???)

用java写的这道题&#xff0c;两个样例都可以通过&#xff0c;但是提交之后最终的通过率只有8.51%&#xff1f;&#xff1f;&#xff1f;自己搞了半天一直都是这个通过率&#xff0c;然后用网上说的100%通过率的代码也是一样的结果&#xff0c;最后时间到了还是没有拿到满分&am…

这些vue基本语法,你掌握了吗

文章目录 一、 vue 项目重点概念介绍1. 单页面应用程序2. 单文件组件3.数据驱动视图 二、 vue 基本结构1、template2、script3、style 三、 vue 常用指令介绍1、内容渲染指令&#xff08;1&#xff09;插值表达式 {{xxx}} —常用方式&#xff08;2&#xff09;v-text&#xff0…

session和JWT的应用及区别

文章目录 登录认证(node)一、session1.下载session2.全部配置session3.存储session4.获取session5.销毁session 二、JWT (Json web token)1.JWT 的工作原理2.JWT 的组成3.下载JWT4.生成token5.解密TOken6.配置全局错误中间件 登录认证(node) 一、session 一、在node中使用sess…

还不懂Redis?看完这个故事就明白了!

还不懂Redis?看完这个故事就明白了! 我是Redis 你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生,跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也…

全国独家专利药品有哪些品种?全国独家药品产品汇总查阅

独家药品一般是指某一家药企拥有生产和销售某种药品的独家权利&#xff0c;细分有活性成分独家&#xff08;通用名成分独家&#xff09;、品种独家&#xff08;同成分不同剂型&#xff09;、独家品规&#xff0c;通俗可以分成药品功能独家和产品独家。独家药品经常被人认为是具…

证件拍照扫描——基于C++与深度神经网络实现证件识别扫描并1比1还原证件到A4纸上

前言 数字化时代的到来&#xff0c;越来越多的证件需要进行电子化处理&#xff0c;例如身份证、驾驶证、护照等。在进行电子化处理时&#xff0c;最常见的需求就是将证件照片复制到A4纸上&#xff0c;以便于打印、存档或传输。同时&#xff0c;为了方便信息的录入和管理&#…

一条命令搭建HTTP服务器

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自远程内网穿透的文章&#xff1a;【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透…

word自带公式编辑

快捷键&#xff1a; 公式编辑&#xff1a;alt“” 上标&#xff1a;x^i 空格 下标&#xff1a;x_i 空格 实数R&#xff1a;\doubleR 空格 偏微分算子&#xff1a;“\partial” 极限&#xff1a;“\limit”&#xff08;按空格后会显示一串很长的式子&#xff0c;再空格就变…

在Linux操作系统上部署wgcloud监控

1.wgcloud监控介绍 1.1 介绍 ​ 这是一款开源的主机监控系统&#xff0c;可以支持主机各种指标监测&#xff08;cpu使用率&#xff0c;cpu温度&#xff0c;内存使用率&#xff0c;磁盘容量空间&#xff0c;磁盘IO&#xff0c;硬盘SMART健康状态&#xff0c;系统负载&#xff…

starrocks基于prometheus实现监控告警

监控报警 本文介绍如何为 StarRocks 设置监控报警。 StarRocks 提供两种监控报警的方案。企业版用户可以使用内置的 StarRocksManager&#xff0c;其自带的 Agent 从各个 Host 采集监控信息&#xff0c;上报至 Center Service&#xff0c;然后做可视化展示。StarRocksManager …

[陇剑杯 2021]之Misc篇(NSSCTF)刷题记录⑤

NSSCTF-Misc篇-[陇剑杯 2021] 日志分析:[陇剑杯 2021]日志分析&#xff08;问1&#xff09;[陇剑杯 2021]日志分析&#xff08;问2&#xff09;[陇剑杯 2021]日志分析&#xff08;问3&#xff09; 简单日志分析&#xff1a;[陇剑杯 2021]简单日志分析&#xff08;问1&#xff0…

Python制作一个自动发送弹幕的工具,让你看直播不冷场

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 让我们先看看效果&#xff1a; 名字我就打码了&#xff0c;当然名字不是关键&#xff0c;我直接截图展示算了&#xff0c;GIF的话&#xff0c;太麻烦了。 环境使用: Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器…

存在列排斥力的另一例证

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A中有5个1&#xff0c;B中全是0&#xff0c;排列组合A的所有可能&#xff0c;统计迭代次数的顺序。其中有12组数据 A-B 迭代次数 1 0 1 5*4*2*1…

Inception 深度卷积神经网络(CNN)架构

Inception是一种深度卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;由Google在2014年提出。它是一种基于多尺度卷积的网络结构&#xff0c;旨在解决传统CNN在处理不同大小的输入图像时存在的问题。 Inception的主要特点是使用了多个不同尺度的卷积核来提取不同尺度…

API测试| 了解API接口测试| API接口测试指南(一)

什么是API&#xff1f; API是一个缩写&#xff0c;它代表了一个 pplication P AGC软件覆盖整个房间。API是用于构建软件应用程序的一组例程&#xff0c;协议和工具。API指定一个软件程序应如何与其他软件程序进行交互。 例行程序&#xff1a;执行特定任务的程序。例程也称为过…

人脸检测和行人检测2:YOLOv5实现人脸检测和行人检测(含数据集和训练代码)

人脸检测和行人检测2&#xff1a;YOLOv5实现人脸检测和行人检测(含数据集和训练代码) 目录 人脸检测和行人检测2&#xff1a;YOLOv5实现人脸检测和行人检测(含数据集和训练代码) 1. 前言 2. 人脸检测和行人检测数据集说明 &#xff08;1&#xff09;人脸检测和行人检测数据…

初识C++之左值引用与右值引用

目录 一、左值引用与右值引用 1. 左值和右值的概念 1.1 左值 1.2 右值 1.3 左值与右值的区分 2. 左值引用与右值引用 2.1 左值引用与右值引用的使用方法 2.2 左值引用的可引用范围 2.3 右值引用的可引用范围 3. 右值引用的作用 3.1 减少传值返回的拷贝 3.2 插入时的…