redis集群的相关问题

SpringBoot整合连接Redis集群 第一步,新建项目maven项目,添加依赖 (1)本文所采用的SpringBoot的版本如下 org.springframework.boot spring-boot-starter-parent 2.0.2.RELEASE (2)加入Redis相关依赖 org.springframework.boot spring-boot-starter-data-redis redis.clients jedis 第二步,applicati 阅读详情

Redis主从模式

也称为主备模式。是一种高可用的方案。

一个主服务器可以有多个从服务器。
Redis的自身支持主从复制,只要更改下启动配置即可。从节点可以自动从主节点同步数据,主节点可以自动把读请求转给从节点从而实现读写分离减轻自身压力。但是,主节点如果完蛋了,从节点无法升级为主节点,client也无法自动切换,所以没有高可用的能力。

redis配置从服务器的过程
在这里插入图片描述

脑裂问题

如果只有master和slave两个角色,为防止主服务器假死后又复活,但是主从服务器通信又相互中断,这样彼此都不知道对方在提供服务,所以都自己提供服务。这种情况下需要引入哨兵。用户应用连接哨兵,并从哨兵获取提供服务的服务器链接。每个redis服务器,都访问哨兵来确定自己的状态。

不过引入哨兵的同时就要保证哨兵的高可用。即使不用哨兵,其实我们也能解决问题。那就是在设置一个lease。slave颁发的lease比master的lease+1。如果master复活,且他没有检测到从服务器,他就使用原有lease。应用服务永远向lease最大的服务器发送请求,并触发报警让人工介入。

Redis哨兵

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换。Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

  • 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
  • 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
  • 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。

在这里插入图片描述
在Redis高可用架构中,Sentinel往往不是只有一个,而是有3个或者以上。目的是为了让其更加可靠,毕竟主和从切换角色这个过程还是蛮复杂的。

哨兵模式的配置如下,需要配置若个哨兵

<bean id="sentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">  
        <property name="master">  
            <bean class="org.springframework.data.redis.connection.RedisNode"> 
                <!-- 这里填写主reids的机器名 -->
                <property name="name" value="${redis.host1.hostname}" /> 
            </bean>  
        </property>
        <property name="sentinels">  
            <!-- 这里配置哨兵 -->
            <set>  
                <bean class="org.springframework.data.redis.connection.RedisNode">  
                    <!-- 哨兵的服务器地址IP -->
                    <constructor-arg   value="${redis.host1.sentinels.host1}"></constructor-arg>  
                    <!-- 哨兵的服务器地址端口 默认是26379  -->
                    <constructor-arg   value="${redis.host1.sentinels.port1}"></constructor-arg>
                </bean>  
            </set> 
            <!-- 可以重复循环上面的节点,设置多个哨兵 --> 
        </property>  
    </bean> 

redis cluster

Redis3.0版本之后支持Cluster。Redis集群至少要三主三丛,主从不需要配置,系统自动选择。
每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如6379,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,比如16379。第二个端口(本例中就是16379)用于集群总线,

(1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.

(2)下列情况下整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

  • 如果集群任意master挂掉,且当前master没有slave,集群进入fail状。
  • 如果进群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

客户端会可以对任意一个redis实例去发送命令,每个redis实例接收到命令,都会计算key对应的hash slot。然后告诉客户端。如果使用下面的指令登陆redis的shell,会实现自动的重定向。

#查看key对应的hash slot
cluster keyslot key
 
#连接客户端时加-c参数可以自动重定向
redis-cli -c

gossip协议

Gossip 算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了 Gossip 的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的状态都是一致的,当然这也是疫情传播的特点。
简单的描述下这个协议,首先要传播谣言就要有种子节点。种子节点每秒都会随机向其他节点发送自己所拥有的节点列表,以及需要传播的消息。任何新加入的节点,就在这种传播方式下很快地被全网所知道。这个协议的神奇就在于它从设计开始就没想到信息一定要传递给所有的节点,但是随着时间的增长,在最终的某一时刻,全网会得到相同的信息。当然这个时刻可能仅仅存在于理论,永远不可达。

gossip需要很大的网络代价,而且达成最终一致性的速度很慢。但是对redis集群这种场景则正好适合。

Redis5.0相关问题及哨兵模式和cluster集群搭建 1、RDB和AOF的优缺点 RDB 优点 RDB 是一个非常紧凑(compact)的文件,体积小,传输速度快,适合灾备。 RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是 fork 出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘 I/O 操作。 RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快很多。 缺点 RDB 丢数据将会丢掉两次持久化之间的所有数据~ 当redis中数据集比较大时候,RDB由于RDB方式需 阅读详情

相关推荐

集群方案解决方案:如何建立服务器集群及相关问题

集群方案解决方案,集群技术是实现系统高可用性的重要手段,本节将讨论什么是服务器集群、如何建立服务器集群及相关问题

【redis相关】redis集群结合Spring配置的一些问题

项目中要将单机版redis服务器改为redis集群,配置的过程和配置过程中遇到的一些问题作如下记录。 首先修改redis的配置文件redis.conf daemonize yes port xxxx (每个节点一个端口) cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 因为要让r...

名侦探张六儿的博客 600

Cursor聊天记录迁移工具:实现跨设备AI对话同步与备份

在软件开发中,数据持久化与迁移是常见需求,尤其当工具依赖本地存储时。SQLite作为轻量级关系型数据库,因其嵌入式、零配置特性,常被用于存储应用状态与用户数据。其WAL(预写式日志)模式提升了并发性能,但也增加了数据操作复杂性。通过命令行工具与JSON序列化技术,可以实现结构化数据的提取、转换与安全迁移,这对于保障开发资产的连续性与可移植性具有重要价值。例如,在AI辅助编程场景下,开发者与AI的对话记录包含关键的问题分析、解决方案与决策逻辑,是重要的上下文资产。cursor-chat-transfer工具正

weixin_42551967的博客 533

springboot整合配置Redis单节点,集群,哨兵

springboot2.x其中使用的是Lettuce。 pom文件: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependen.

xy294636185的博客 1498

Windows下的Geant4安装教程

本教程将从0开始展示在Windows下如何安装Geant4,包括各种辅助工具(QT、Cmake、Visual Studio)的下载安装,环境变量的配置,以及example的生成等。

weixin_49065278的博客 4107

计算机保研/考研面试题——计算机组成原理篇

本文总结了985和华五学校习计算机保研/考研常问面试时的计算机组成原理题,欢迎点赞、收藏、评论、关注

安晴晚风的博客 7547

数据结构--知识点16--搜索算法(二叉树)

文章目录一、树的概念1、特点2、树的术语3、树的种类4、树的存储与表示5、常见的树的应用场景二、二叉树1、概念2、性质 一、树的概念 树是一种抽象数据类型(ADT)或是视作这种抽象数据类型的数据结构 1、特点 每个节点有零个或多个子节点 没有父节点的节点称为根节点 每一个非根节点有且只有一个父节点 除了根节点外,每个子节点可以分为**多个不相交(因为都只有一个父节点)**的子树 2、树的术语 节点的度:一个节点含有的子树的个数称为该节点的度 树的度:一棵树中,最大的节点的度称为树的度 叶节点或终端节点

ANingL的博客 3543

CCF CSP历年题解(python)

菜鸡一枚,没参加过算法竞赛,单纯为了抵研究生考试复试才刷题,通过写博客记录下来,希望能和大家互相交流,代码质量不高,大家见谅。 因为考研等原因,题目不定期更新… 第一题 201312-1出现最多次数的数 ...

weixin_44690402的博客 5004

Redis集群中故障恢复

Redis集群中故障恢复 问题1:如果主节点下线?从节点能否自动升为主节点? 答:主节点下线,从节点自动升为主节点。 问题2:主节点恢复后,主从关系会如何? 主节点恢复后,主节点变为从节点! 问题3:如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续? 答:服务是否继续,可以通过redis.conf中的cluster-require-full-coverage参数(默认关闭)进行控制。 主从都宕掉,意味着有一片数据,会变成真空,没法再访问了! 如果无法访问的数据,是连续的业务数据,我们需要停

weixin_42796403的博客 1727

51单片机 驱动有源/无源蜂鸣器+Proteus仿真

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序

perseverance51博客 2万+

基于江协科技STM32创建HAL库工程模板

基于江协科技STM32入门教程创建的HAL库工程模板

2401_82728381的博客 1134

Redis 集群相关问题

本文件只是为了我在工作中使用方便记录。 1、首先可以针对现场环境编写一个较为常用的脚本。通过这个脚本,可以保证在 redis 集群上的每个节点都执行统一的命令   ##### redis.sh REDIS_CLI=/home/xingchen/SoftWareBin/just_clients/redis/bin/redis-cli COMMAND=$@ ${REDIS_CLI} -h ...

weixin_41684022的博客 2805

UWB 多传感器通信的纳秒无线位置和时钟同步方法

利用UWB高精度的特点,实现多节点下的无线时钟同步和定位。通过优化硬件架构,减少不确定延迟的影响,系统可以提供纳秒级时钟同步消息

DT程序员的博客 1329

Redis缓存相关问题分析与解决,Redis集群cluster环境搭建

高可用(HA)是分布式系统架构设计中必须考虑的因素之一,它是通过架构设计减少系统不能提供服务的时间。单点是系统高可用的大敌,应该尽量在系统设计的过程中避免单点。通过架构设计而保证系统高可用的,其核心准则是:冗余。实现自动故障转移。sentinel(哨兵)是用于监控redis集群中Master状态的工具,其本身也是一个独立运行的进程,是Redis 的高可用解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。

怀揣梦想,一颗执着于技术的心从未磨灭,内心住着一颗顽强的小强时刻提醒自己层层突破自我,同时也成就他人 931

【AutoSAR】【BootLoader】AutoSAR Bootloader 原理与流程

目录 一、HIS规范 二、BOOTLOADER软件架构 三、烧写流程 一、HIS规范 国外整车厂意识到在线刷新ECU的重要性,由奥迪公司、宝马公司、戴姆勒公司、保时捷公司、大众公司成立一个委员会,名为HIS委员会,专门负责帮助汽车制造商掌握微处理器控制单元软件和质量保证领域的原理和方法; HIS Bootloader的主要功能是通过标准的通信接口对ECU进行再编程 。 HIS Bootloader的软件设计基于AUTOSAR体系架构、ISO14229、ISO15765-2、HI...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5248

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis集群配置相关问题

(1).redis-cli -a 123456 --cluster create 127.0.0.1:6379 127.0.0.1:6378 127.0.0.1:6377 127.0.0.1:6376 127.0.0.1:6375 127.0.0.1:6374 --cluster-replicas 1 --no-auth-warning(忽略密码不安全问题)clusterNodes: localhost:6379,localhost:6378,localhost:6377 #集群节点,逗号,分隔。

Java 1391

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Redis集群相关问题

文章目录说一说redis的复制功能旧版本redis复制功能(2.8之前)新版本redis复制功能(2.8之后)说一说redis的哨兵(Sentinel)模式redis哨兵模式是如何检测服务器是否下线的?redis集群方案其他问题redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?Redis集群会有写操作丢失吗redis集群最大节点个数是多少?Redis集群如何选择数据库? 说一说redis的复制功能 在 Redis中,用户可以通过执行SLAV

weixin_44533129的博客 562

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Redis集群原理专题】分析一下相关的Redis集群模式下的脑裂问题!

首先,脑裂从字面上理解就是脑袋裂开了,就是思想分家了,就是有了两个山头,就是有了两个主思想。

kelai_6792的博客 727

Redis深度历险(3)-集群的相关问题

目录 1.CAP理论 2.Redis主从复制模型 1.什么是主从复制 2. 主从复制是异步还是同步的 3.主从复制的作用 4.主从复制的过程 3.Redis Sentinel 哨兵模式 1.什么是哨兵模式 2.哨兵模式架构 3.节点下线 4.Leader选举 5.为什么需要三个及以上的哨兵 4.Redis Cluster 集群 数据分区方案 1.哈希分区方案 2.一...

BoringError的博客 5631

【Redis集群专题】「集群技术三部曲」分析一下相关的Redis集群模式下的脑裂问题(问题篇)

首先,脑裂从字面上理解就是脑袋裂开了,就是思想分家了,就是有了两个山头,就是有了两个主思想。

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 1628

一文讲解Redis中的集群数据分区相关问题

一文讲解Redis中的集群数据分区相关问题

Kerwin_D的博客 650

Redis 3.0.2集群搭建以及相关问题汇总

Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加、删除redis节点,不用停止服务(3)根据节点性能,动态分配不同数量的key到不同redis节点 (4)每个节点都配有slave,并自动监测和切换 Redis3 cluster 中增加了一个重要概念: ...

baiyun6211的博客 186

Redis面试题:分片集群相关问题

分片集群主要解决的是,海量数据存储的问题,集群中有多个master,每个master保存不同数据,并且还可以给每个master设置多个slave节点,就可以继续增大集群的高并发能力。当客户端请求可以访问集群任意节点,最终都会被转发到正确节点。Redis 集群引入了哈希槽的概念,有 16384 个哈希槽,集群中每个主节点绑定了一定范围的哈希槽范围, key通过 CRC16 校验后对 16384 取模来决定放置哪个槽,通过槽找到对应的节点进行存储。嗯~,在redis集群中是这样的。

xiaoshuzuiwuqing的博客 269

【每日八股】复习 Redis Day5:集群(上)

整理与 Redis 集群相关的知识。Redis 集群的三种主要模式分别是主从、哨兵和分片。

YGGP的博客 1022
上一篇: 分布式事务的几种方案
下一篇: SPI和类加载器
define_us
博客等级 码龄14年 157粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值