不懂这些,面试都不敢说自己熟悉Redis

news2024/9/22 23:36:08

点赞再看,Java进阶一大半

下面这位就是Redis的创始人,他叫antirez,让我们Java开发者又要多学一门Redis的始作俑者。

在这里插入图片描述

我们肯定很难想象Redis创始人竟然学的是是建筑专业,而当年antirez是为了帮网站管理员监控访问者的实时行为才开发的Redis。为啥antirez不用MySQL来开发?MySQL并不适用于实时应用程序,存储数据库需要磁盘读写,大量的数据操作会使网站速度过于缓慢。于是Redis的前身LLOOGG就这样诞生了,后期也发展为了Redis。

大家好,我是南哥。

一个Java学习与进阶的领路人,跟着南哥我们一起在Java之路上成长。

本文收录在我开源的《Java学习进阶指南》中,涵盖了想要学习Java、成为更好的Java选手都在偷偷看的核心知识、面试重点。相信能帮助到大家在Java成长路上不迷茫,南哥希望收到大家的 ⭐ Star ⭐支持,这是我创作的最大动力。GitHub地址:https://github.com/hdgaadd/JavaProGuide。

1. Redis哨兵

1.1 哨兵作用

面试官:Redis哨兵知道吧?

哨兵的含义是什么?我们来看看百度百科的解释。

哨兵,汉语词语,是指站岗、放哨、巡逻、稽查的士兵

Redis主从架构也有自己的哨兵,名为Sentinel。Sentinel是什么含义,我们看看英文含义,很遗憾这个英文起名没有什么故事可讲,英文意思还是哨兵。

Redis哨兵本质是一个运行在特殊模式下的Redis服务器,并不是特殊要另外部署的服务模块。哨兵可以是一个,如果公司资金充足的话,部署由多个Sentinel实例组成的哨兵系统也是可以的。

那哨兵有什么作用?

它的主要作用是通过检测Redis主从服务器的下线状态,选举出新Redis主服务器,也就是故障转移,来保证Redis的高可用性。

1.2 检测主从下线状态

面试官:你说说是怎么检测Redis主从服务器的下线状态的?

我们先来讲讲哨兵最重要的第一个功能,检测Redis主从服务器下线状态,后面我们再来讲讲故障转移。

哨兵检测主从服务器下线状态有两种方式,分为主观和客观,我们可以给哨兵配置其中一种。

(1)检测主观下线状态:默认情况Sentinel会每隔 1 s向Redis主、从服务器发送PING命令,通过PING命令返回的信息来判断Redis主从服务器的下线状态。

(2)检测客观下线状态:Sentinl在主观判断下线后,会向其他Sentinel进行询问是否同意该节点已下线,当标记下线的数量足够多就会判断客观下线。

下面是哨兵们和Redis主从服务器之间藕断丝连的关系。

在这里插入图片描述

1.3 检测下线状态不一致

面试官:有没有A哨兵判断Redis实例下线,但B哨兵判断Redis实例仍然存活的情况?

各个哨兵的配置对检测下线的配置不同,可能会产品奇奇怪怪的问题,大家要注意下。

假如我们的A、B两个哨兵配置的是检测主观下线状态,哨兵会判断Redis实例进入主观下线所需的响应时间长度

南哥假设A哨兵的配置是10000毫秒、B哨兵是50000毫秒,但此时Redis实例要在20000毫秒才响应,像这种情况就会发生A哨兵判断Redis实例下线,但B哨兵判断Redis实例仍然存活的情况。

2. 哨兵选举

2.1 选举领头哨兵

面试官:领头哨兵怎么选举出来的?

大家注意不要把领头哨兵和Redis主服务器弄混淆了,不然可就尴尬了哈。

南哥先说说领头哨兵的作用,免得大家误解。领头Sentinel起到执行故障转移的作用,也就是选举出新的Redis主服务器,而且只有当Redis主服务器被判断客观下线后才会选举出领头Sentinel。

那领头哨兵要怎么选择出来呢?选举出这个天选之子。

Sentinel哨兵设置局部领头Sentinel的规则是先到先得

最先向目标Sentinel发送设置要求的源Sentinel将成为目标Sentinel的局部领头Sentinel,而之后接收到的所有设置要求都会被目标Sentinel拒绝。

如果有某个Sentinel被半数以上的Sentinel设置成了局部领头Sentinel,那么这个Sentinel就会成为领头Sentinel。

2.2 选举Redis主服务器

面试官:知道怎么选举新的Redis主服务器吗?

看到这,我来和大家讲讲哨兵最重要的第二个功能:选举出新的Redis主服务器。

(1)领头Sentinel会将已下线Redis主服务器的所有Redis从服务器保存到一个列表里面。

(2)通过删除策略,删除所有处于下线或者断线状态的、删除最近五秒内没有回复过领头Sentinel命令的、删除与已下线主服务器连接断开超过10毫秒的。

(3)如果有多个相同优先级的从服务器,将按照复制偏移量进行排序选出偏移量最大的,复制偏移量最大也就是数据同步最新的。

(4)最后选出的Redis实例也就成为新的Redis主服务器。

戳这,《JavaProGuide》作为一份涵盖Java程序员所需掌握核心知识、面试重点的Java学习进阶指南。

在这里插入图片描述

欢迎关注南哥的公众号,公众号里有南哥珍藏整理的大量优秀pdf书籍:Java进阶指南针。

我是南哥,南就南在Get到你的有趣评论➕点赞➕关注。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

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

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

相关文章

22集 如何minimax密钥和groupid-《MCU嵌入式AI开发笔记》

22集 如何获取minimax密钥和groupid-《MCU嵌入式AI开发笔记》 minimax密钥获取 https://www.minimaxi.com/platform 进入minimax网站,注册登录后,进入“账户管理”, 然后再点击“接口密钥”,然后再点击“创建新的密钥”。 之…

linux系统安装python3和pip

一、安装python 1、安装依赖环境 yum install gcc -y yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install zlib zlib-devel openssl -y yum install openssl…

什么是信创沙箱?信创沙箱的原理是什么?

在这个数字化高速发展的时代,信息安全问题愈发显得重要。我们每天都在为数据的安全性、隐私性和完整性操心。有时候,感觉就像是一场没有终点的马拉松。而在这场马拉松中,深信达信创沙箱(Trusted Computing Sandbox)无疑…

谷粒商城实战笔记-52~53-商品服务-API-三级分类-新增-修改

文章目录 一,52-商品服务-API-三级分类-新增-新增效果完成1,点击Append按钮,显示弹窗2,测试完整代码 二,53-商品服务-API-三级分类-修改-修改效果完成1,添加Edit按钮并绑定事件2,修改弹窗确定按…

Windows 11 家庭中文版 安装 VMWare 报 安装程序检测到主机启用了Hyper-V或Device

1、问题 我的操作系统信息如下: 我在安装 VMWare 的时候,报: 因为我之前安装了 docker 桌面版,所以才报这个提示。 安装程序检测到主机启用了 Hyper-v或 Device/credential Guard。要在启用了Hyper-或 Device/Credential Guard …

如何防止热插拔烧坏单片机

大家都知道一般USB接口属于热插拔,实际任意带电进行连接的操作都可以属于热插拔。我们前面讲过芯片烧坏的原理,那么热插拔就是导致芯片烧坏的一个主要原因之一。 在电子产品的整个装配过程、以及产品使用过程经常会面临接口热插拔或者类似热插拔的过程。…

领夹麦克风哪个品牌好,电脑麦克风哪个品牌好,热门麦克风推荐

​在信息快速传播的时代,直播和视频创作成为了表达与交流的重要方式。对于追求卓越声音品质的创作者而言,一款性能卓越的无线麦克风宛如一把利剑。接下来,我要为大家介绍几款备受好评的无线麦克风,这些都是我在实际使用中体验良好…

emr部署hive并适配达梦数据库

作者:振鹭 一、达梦 用户、数据库初始化 1、创建hive的元数据库 create tablespace hive_meta datafile /dm8/data/DAMENG/hive_meta.dbf size 100 autoextend on next 1 maxsize 2048;2、创建数据库的用户 create user hive identified by "hive12345&quo…

Covalent(CXT)运营商网络规模扩大 42%,以满足激增的需求

Covalent Network(CXT)是领先的人工智能模块化数据基础设施,网络集成了超过 230 条链并积累了数千名客户,目前 Covalent Network(CXT)网络迎来了五位新运营商的加入,包括 Graphyte Labs、PierTw…

【BUG】已解决:ModuleNotFoundError: No module named ‘tensorboard‘

ModuleNotFoundError: No module named ‘tensorboard‘ 目录 ModuleNotFoundError: No module named ‘tensorboard‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#…

【状态机动态规划 状态压缩】1434. 每个人戴不同帽子的方案数

本文涉及知识点 位运算、状态压缩、枚举子集汇总 动态规划汇总 LeetCode 1434. 每个人戴不同帽子的方案数 总共有 n 个人和 40 种不同的帽子,帽子编号从 1 到 40 。 给你一个整数列表的列表 hats ,其中 hats[i] 是第 i 个人所有喜欢帽子的列表。 请你…

SQL实战宝典:快速上手数据库查询与优化

文章目录 SQL 速成手册SQL 的主要功能1、基本查询语句2、表操作语句3、数据操作语句4、函数与聚合操作5、子查询与联接6、高级操作7、性能优化与安全性 基本查询语句表操作语句数据操作语句函数与聚合操作子查询与联接高级操作性能优化与安全性 SQL 速成手册 SQL(S…

DataX 本地调试配置

简要说明 根据自己的开发需求,完成了reader、writer、transformer开发后,在ide内通过Engine入口,调试自己的插件和job的json。 前置条件 已在系统安装了datax,本例子是在windows环境下,安装包地址https://github.co…

204、【动态规划】牛客网 ——DP3 跳台阶扩展问题(Python版本)

题目描述 原题链接:DP3 跳台阶扩展问题 解题思路 一个DP问题,相比于普通爬楼(只能爬一层或者两层)对应的状态函数为 d p [ i ] d p [ i − 1 ] d p [ i − 2 ] dp[i] dp[i - 1] dp[i - 2] dp[i]dp[i−1]dp[i−2]。本题的dp…

什么是倾斜45度的火山图?

一位老师聊起火山图(Volcano plot | 别再问我这为什么是火山图 (在线轻松绘制)),说见过倾斜45度的类似图,可否演示怎么画?想了下,可能是下面这种图,绘起来看看。 检查和安…

零代码GIS场景视效升级:支持TMS/WMS/WMTS协议

首先和大家聊聊为什么现在很多人都在追求GIS场景的视效提升。第一是因为GIS场景本身需要包含多种自然信息,越是优秀的视觉效果,就越能直观反应出真实的地理信息,增强系统的实用性;第二则是因为能够极大降低系统的使用门槛&#xf…

MinIO使用基础教程

MinIO使用基础教程 一、背景二、快速安装2.1 虚拟机安装2.2 Windows安装2.2.1 下载MinIO服务器2.2.2 启动 MinIO Server2.2.3 通过浏览器访问MinIO服务控制台 三、使用介绍3.1 创建存储桶3.2 上传和下载文件3.3 设置文件公开访问 四、实战SpringBoot Minio实现文件上传和查询五…

2024春秋杯网络安全联赛夏季赛Crypto(AK)解题思路及用到的软件

2024春秋杯网络安全联赛夏季赛Crypto(AK) 2024春秋杯网络安全联赛夏季赛Crypto解题思路以及用到的软件 所有题用到的软件 1.vm(虚拟机kali)和Ubuntu,正常配置即可B站有很多。 2.Visual Studio Code(里面要配置python,crypto库和Sagemath数学软件系统S…

uni-app框架+vue 实现上拉加载和下拉刷新功能

前言:哈喽,大家好,我是码喽的自我修养!今天给大家分享uni-app框架vue实现上拉加载和下拉刷新功能!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到带大家&#xff0…

1. kubernetes核心组件

kubernetes核心组件 一、kubernetes概述1、kubernetes是什么2、kubernetes作用/优势 二、kubernetes核心组件1、节点类型2、核心组件2.1 Master节点的组件2.2 Node节点的组件 3、k8s创建容器的流程 一、kubernetes概述 1、kubernetes是什么 由google公司基于go语言开发的集群…