Redis实践(四)高可用的集群+哨兵部署 下的jedis开发

Redis高可用集群 当客户端向一个错误的节点发出了指令,该节点会发现指令的 key 所在的槽位并不归自己管理,这时它会向客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点去获取数据。奇数个master节点可以在满足选举该条件的基础上节省一个节点,比如三个master节点和四个master节点的集群相比,大家如果都挂了一个master节点都能选举新master节点,如果都挂了两个master节点都没法选举新master节点了,所以奇数的master节点更多的是。Rank越小代表已复制的数据越新。 阅读详情

在实践(二)中,部署了高可用集群和哨兵,那么如何在这种情况下进行应用的开发呢,jedis提供了相应的api,可以实现。本次实践就是验证一下如何进行的。

一、目标

通过java小程序,来验证当redis发生主从切换后,对应用是透明的,数据的存储和读写可以正常工作

二、环境

1、还是使用144,155 上部署的redis集群,1主1从,3个哨兵

        2、本地eclipse环境里,建立java工程,进行应用连接和读写

三、步骤

(1)验证步骤描述

        1、客户端,获取redis连接池

        2、客户端写入 key1,value1

        3、客户端休眠30秒

        4、客户端休眠开始后,在服务端,手工shutdwon 144的redis实例

        5、客户端休眠30秒后,写入 key2,value2,并且读取key1,key2

       (2) 代码如下:

      

package com.cwqsolo.redis.test;

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

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

public class RedisSentinelDemo {

    // redis 采用1主1从方式, 主:192.168.136.144 从:192.168.136.155
    // sentinel 采用3哨兵, 144上部署2个,155上部署1个
    public static void main(String[] args) {

	// 创建哨兵池
	Set sentinels = new HashSet();
	sentinels.add(new HostAndPort("192.168.136.144", 16379).toString());
	sentinels.add(new HostAndPort("192.168.136.144", 26379).toString());
	sentinels.add(new HostAndPort("192.168.136.155", 16379).toString());
	JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster",
		sentinels);
	System.out.println("Current master: "
		+ sentinelPool.getCurrentHostMaster().toString());

	Jedis master = sentinelPool.getResource();
	master.set("username1", "cwqsolo");
	System.out.println("set->username1:cwqsolo ");
	sentinelPool.returnResource(master);

	// 这里休眠30秒 ,将144 主redis杀掉,按哨兵机制,将发现主redis状态down
	// 重新选举新的slave为主master
	try {
	    System.out.println("sleep 30s  begin");
	    Thread.sleep(30000);
	    System.out.println("sleep 30s  end!!!");
	} catch (Exception Exc) {

	    Exc.printStackTrace();
	    System.exit(0);
	}

	// 重新获得jedis
	Jedis master2 = sentinelPool.getResource();
	String value = master2.get("username1");
	System.out.println("get->username1: " + value);

	master2.set("username2", "newland");
	System.out.println("set->username2:newland ");

	String value2 = master2.get("username2");
	System.out.println("get->username2: " + value);

	master2.close();
	sentinelPool.destroy();
    }
}
      (3) 过程记录

        下面是休眠30s开始后,服务端shutdown 144master, 哨兵发现后,进行主从切换

       在144上,可以看到144原来的redis实例已经不在。

   下面是客户端应用执行情况,redis的主从切换对于客户端应用是透明的。


    从服务端可以看到应用设置的数据情况:


Redis原理和高可用场景实践总结 本文系统介绍了Redis在企业级应用中的核心技术与实践方案。主要内容包括:Redis基础原理(线程模型、数据类型、事务处理);持久化机制(RDB和AOF的优缺点及选择策略);高可用架构(主从复制、哨兵机制、集群模式);性能优化(内存管理、网络参数调优);常见问题解决方案(雪崩、穿透、并发竞争);以及生产环境部署建议。文章详细对比了不同架构的适用场景,提供了企业级数据备份方案,并针对各种业务场景给出了具体的技术选型和实现方案,是一份全面的Redis应用指南。 阅读详情

相关推荐

[springboot]整合连接redis单例、哨兵及集群模式

当redis 哨兵或cluster集群搭建好之后,在Spring Boot应用中你该如何去理解这些redis实例及集群模式,如何连接及使用这些redis实例。

字母哥博客 4456

扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群

Redis哨兵模式,由Sentinel节点和Redis节点组成,哨兵节点负责监控Redis的健康状况,负责协调Redis主从复制的关系。 本文不详细讨论Redis哨兵模式,关于哨兵的详细介绍可以参考(https://blog.youkuaiyun.com/u010297957/article/details/55050098)   在使用哨兵模式以后,客户端不能直接连接到Redis集群,而是连接到哨兵集...

大新博客 5250

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1324

jedis针对三种redis工作模式、哨兵模式的源码阅读分析

只要是非单机模式,一定要配置JedisPoolConfig,它的源码中是这样写的 import org.apache.commons.pool2.impl.GenericObjectPoolConfig; public class JedisPoolConfig extends GenericObjectPoolConfig { public JedisPoolConfig() {

很多时候犯错都是在不知情的情况下发生的 1万+

英飞凌AURIX™ TC3xx系列MCU的ISO 26262安全机制实战:从安全手册到代码集成的避坑指南

本文深入探讨英飞凌AURIX™ TC3xx系列MCU的ISO 26262安全机制实战应用,重点解析锁步核配置、ECC策略优化及SafeTlib库集成中的关键问题。通过代码示例和配置建议,帮助开发者实现ASIL D级别安全性,规避常见陷阱,提升汽车电子系统的功能安全合规性。

weixin_42558093的博客 404

LLC谐振变换器设计实战:从工作原理到参数设计与调试

开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验

weixin_34129696的博客 561

Java开发 - 深入理解Redis哨兵机制原理

写到这里,Redis的哨兵模式基本是给大家讲解清楚了,不知道你get到了多少?如果还有其他疑问,不放评论区留言和小伙伴们一起讨论吧,最后,不要吝啬你们的赞,动动小手,给博主一个大大的支持吧。

CodingFire的博客 1501

3D打印机之Marlin固件配置

一、Marlin固件必要配置 打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。 配置波特率 #define BAUDRATE 250000 配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。 2. 配置主板类型 第 134 行 #define MOTHERBOARD BOARD_MKS_GEN_L 找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子

acktomas的博客 2万+

Redis——jedis连接redis哨兵模式简单使用

maven导入jedis包: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.7.0</version> </dependency> 搭建redis哨兵模式:Redis——sentinel哨兵模式_FlyLikeButterfly的博客-

FlyLikeButterfly的博客 4460

AGM Supra软件从零到一:国产CPLD工程创建全流程实战解析

本文详细解析了AGM Supra软件在国产CPLD开发中的全流程实战操作,从工程创建到代码开发、编译调试,再到高级技巧与疑难排解。特别对比了Supra与Quartus的差异,提供了工程路径管理、Quartus项目转换、HDL代码规范等实用技巧,帮助开发者高效完成CPLD项目开发。

weixin_29193259的博客 502

vmware虚机Debian10磁盘空间无损扩容

该方法不适和LVM的磁盘管理 备份 一定要先做备份,虚机中直接创建一个快照备份 vm上增加空间 初始给的40G空间不够需要扩容,vm那给系统添加到100G 重新分区 查看当前分区情况 sudo fdisk -l

lms99251的博客 7455

java 什么是哨兵_Java中使用redis哨兵模式

Redis概述在传统的软件项目中,使用数据库进行数据存储,但是有一些致命的缺陷,这些缺陷反映在性能方面。由于数据库存储数据的介质是磁盘,而磁盘读写的速度比较慢。在不存在大量高并发的应用场景中,这个缺陷显得并不那么重要,甚至可以忽略。但是在某些互联网项目中,高并发业务比比皆是,例如:双十一的大促,热销商品的抢购等等。在这类场景之下系统需要在极短的时间内完成成千上万次读写操作,传统的关系型数据库在处理...

weixin_35215870的博客 2526

药物对接仿真软件:HADDOCK_(9).结果分析方法

HADDOCK是一种强大的药物对接仿真工具,通过对生成的输出文件进行详细的分析,我们可以验证仿真结果的可靠性,并为进一步优化药物设计提供依据。常见的分析方法包括解读输出文件、使用可视化工具进行结构分析、评估对接模型的稳定性和准确性等。通过这些步骤,我们可以更全面地了解受体和配体的结合模式,从而提高药物设计的成功率。

kkchenjj的博客 1006

Redis100篇 - Redis高可用架构设计 主从+哨兵+集群组合方案

本文探讨Redis高可用架构设计,通过主从复制、哨兵和集群的组合方案解决单机Redis的局限性。主从复制提供数据冗余但无法自动故障转移;哨兵实现自动故障转移但不支持数据分片;集群支持数据分片但配置复杂。文章建议根据业务需求灵活选择方案,并详细介绍了哨兵模式的架构设计、配置示例和Java客户端实现。哨兵模式适用于中小规模场景,具备自动故障转移、读写分离等优势,提供了一套可落地的生产级解决方案。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1726

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Redis100篇 - Redis Sentinel怎么用 高可用集群部署指南

本文介绍了Redis Sentinel的核心原理与部署实践,旨在帮助开发者构建高可用Redis集群。主要内容包括: Sentinel的核心功能 监控主从节点健康状况 自动故障转移(Failover) 配置提供与客户端通知 分布式哨兵协作机制 关键技术点 主观下线(SDOWN)与客观下线(ODOWN)判定 Raft算法实现的领导者选举 新主节点选择策略 故障转移完整流程 实战部署指南 环境准备与端口规划 主从节点配置说明 Sentinel集群配置参数 Java客户端集成方法 通过本文,开发者可以掌握Redis

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Redis高可用解决方案哨兵模式与集群模式的比较

根据具体的业务需求和场景,可以选择适合的Redis模式,以提高系统的性能和可靠性。

威哥爱编程,华为 HDE,鸿蒙极客、优快云博客专家、《鸿蒙 HarmonyOS 5/6 开发之路》系列图书第一作者 1853

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Redis哨兵改集群

Redis是一种开源的高性能键值存储系统,经常用于缓存、会话管理、消息队列等应用场景。Redis集群是通过将数据分布在多台服务器上来提供高可用性和扩展性的解决方案。Redis Sentinel(又称为哨兵)是Redis官方提供的用于监控和管理Redis集群的工具。哨兵可以监控Redis主节点和从节点的状态,并在主节点故障时自动进行故障转移,选举新的主节点。然而,如果现有的哨兵架构无法满足业务需求,可以考虑将哨兵改为集群来实现更高的可用性。本文将介绍如何将Redis哨兵架构改为集群架构。

牛肉胡辣汤 913

redis:Redis哨兵机制深度解析与高可用架构实践

Redis Sentinel是Redis官方推荐的高可用性解决方案,它实现了主从架构下的自动故障检测与转移。作为分布式系统的守护者,哨兵机制是资深Java工程师必须深入掌握的分布式协调技术。

weixin_43290370的博客 956

Redis缓存高可用集群

在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。这种方式下,持有最新数据的slave将会首先发起选举(理论上)。

weixin_44882744的博客 1957

4、Redis集群的高可用、哨兵模式、及集群的搭建、用Java连接Redis

Redis集群的高可用、哨兵模式、及集群的搭建、用Java连接Redis

hujieliang123的博客 2232

Redis分布式模式深度解析:哨兵模式与集群模式全对比

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;分布式解决方案哨兵模式解决单点故障集群模式解决性能瓶颈单机Redis的瓶颈单点故障服务不可用内存有限无法存储海量数据CPU有限无法承载高并发fill:#333;important;important;fill:none;color:#333;color:#333;important。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1645

Redis哨兵机制:高可用架构的守护神!⚔️ 主从秒级切换实战指南

高可用基石自动故障检测 + 主从切换客户端透明重定向部署规范哨兵节点 ≥ 3(奇数台)与Redis实例分离部署避坑关键预防脑裂(客户端适配网络优化🔥黄金口诀三哨监一主,故障自转移避裂靠从数,客户端要适配#Redis高可用 #哨兵机制 #分布式系统。

全栈开发工程师 1839

Redis--高可用(主从复制、哨兵模式、分片集群)

Redis 官方提供了三种分布式部署模式:主从复制、Sentinel 哨兵模式和 Cluster集群模式。

你只管努力,其他的交给天意。 1159

redis哨兵模式讲解

文章将首先介绍哨兵的作用和架构;然后讲述哨兵系统的部署方法,以及通过客户端访问哨兵系统的方法;然后简要说明哨兵实现的基本原理;最后给出关于哨兵实践的一些建议。(注:文章内容基于 Redis 3.0 版本) 哨兵的作用和架构 哨兵的作用 在介绍哨兵之前,首先从宏观角度回顾一下 Redis 实现高可用相关的技术。 它们包括:持久化、复制、哨兵和集群,其主要作用和解决的问题是: 持久化:持久化...

xingsilong的博客 6057
上一篇: Redis实践(三)基于jedis开发java应用:redis的8种方式设置key,value
下一篇: Zabbix实践(五):基于java的zabbix api调用实现数据共享
虎纠卫
博客等级 码龄24年 440粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值