当前位置: 首页 > news >正文

Redis入门到精通(三):入门Redis看这一篇就够了

文章目录

  • Redis分布式锁的实现原理
    • Redis实现分布式锁如何合理的控制锁的有效时常?
    • **redisson实现的分布式锁**
    • redisson实现的如何保证主从一致性
  • Redis的集群方案
    • 1.主从复制
      • 主从数据的同步原理
        • 全量同步
        • 增量同步
    • 2.哨兵模式
    • Redis的集群脑裂是什么?
    • 3.分片集群

Redis分布式锁的实现原理

Redis实现分布式锁主要利用Redis的setnx(SET if not exists)命令,】

  • 获取锁
# 添加锁 NX 是互斥 EX是设置超时时间
SET lock value NX EX 10
  • 释放锁
# 释放锁 删除即可
DEL key

Redis实现分布式锁如何合理的控制锁的有效时常?

  • 根据业务执行时间预估
    这个时间不好控制,时间长或短都会对业务造成影响
  • 给锁延期
    我们可以添加一个线程来监控当前线程,如果业务还未完成,就给锁延期,如果业务完成,就释放锁。

有些许麻烦,还需要我们自己创建一个线程,这里有一个现成的解决方案,那就是redisson是实现的分布式锁


redisson实现的分布式锁

redisson实现的锁是可重入的,底层使用hash结构来完成锁的重入。
将锁名作为Key
将线程名和锁可重入的次数作为Value

在这里插入图片描述

redisson实现的如何保证主从一致性

RedLOck(红锁):不能只在一个redis实例上创建锁,应该是在多个redis实例上创建锁(n/2 +1),避免在一个redis实例上上锁

  • 获取锁时,向多个 Redis 节点中获取锁,只有每个节点都获取锁成功,才算-获取锁成功。实现了,只要有一个节点存活,其他线程就不能获取锁,锁不会失效。

  • 当其中有节点宕机时,其他节点仍然含有锁信息,其他节点仍然有效

Redis的集群方案

1.主从复制

搭建主从集群,实现读写分离

在这里插入图片描述

主从数据的同步原理

全量同步

主从全量同步
Replication Id: 简称replid,是数据集的标记,id一致说明是同一个数据集,每一个master都有唯一的replid,slave则会继承master节点的replid
offset: 偏移量,随着记录在repl_baklog中的数据增多而逐渐增大,slave完成同步时也会记录当前同步的offset,如果slave的ofset小于master的offset,说明slave数据落后于master,需要更新

在这里插入图片描述

  1. 从节点请求主节点同步数据,(replication id,offset)
  2. 主节点判断是否是第一次请求,是的话就同步版本信息(replication id 和 offset)
  3. 主节点执行bgsave,生成RDB文件,发送给从节点执行
  4. 在RDB执行期间,主节点会以命令的形式记录到缓冲区(日志文件)
  5. 把生成的日志文件发送给从节点同步
增量同步

主从增量同步(slave重启或后期数据变化)
在这里插入图片描述
1.从节点请求主节点建立连接,主节点判断不是第一次连接,就获取从节点的offset
2. 主节点从日志文件中获取offset之后的值,发送给从节点进行同步

2.哨兵模式

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复

  • 监控: Sentinel会不断检查master和slave是否按照与其工作

Sentinel基于心跳监测服务状态,每隔一秒向集群的每个实例发送一个ping命令
主观下线: 如果某个Sentinel发现某实例未在规定时间内响应,则认为该实例主观下线
客观下线: 超过指定数量(quorum)的sentinel都认为该实例主观下线,则认为该实例客观下线,quorum的值最好超过Sentinel实例数量的一半

  • 自动故障恢复: 如果master故障,Sentinel会将一个slave提升为master,当故障实例恢复后也以新的master为主

哨兵选主原则

  • 首先判断主从节点断开时间长短,如超过指定值就排除该从节点不会被提升为主节点
    判断从节点的slave-priority值,越小优先级越高
    如果slave-priority一样,则判断slave节点的offset值,越大优先级越高
    最后是判断slave节点的运行id大小,越小优先级越高
  • 通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端
    在这里插入图片描述

Redis的集群脑裂是什么?

集群脑裂是由于主节点和从节点和sentinel处于不同的网络分区,使得sentinel没有能够心跳感知到主节点,所以通过选举的方式提升了一个从节点为主节点,这样就存在了两个master,这样就会导致客户端还在旧的主节点哪里写入数据,新节点无法同步数据,当网络恢复后,sentinel会将旧的主节点降为从节点,再从新的master中同步数据,就会导致数据丢失

解决方案:
修改redis的配置,设置最少的从节点数量以及缩短主从数据同步的延迟时间,达不到要求就拒绝请求,就可以避免大量的数据丢失。

# 表示最少的slave节点为1个
min-replicas-to-write 1 # 表示数据复制和同步的延迟不能超过5秒
min-replicas-max-lag 5

小结:
主从和哨兵可以解决高可用,高并发读的问题
但是当出现数据量很多或者需要高并发写的场景时,主从和哨兵模式就会吃力。 为了解决这个问题,引入分片集群的概念

3.分片集群

分片集群:

  • 集群中有多个master,每个master保存不同的数据
  • 每个master有自己的slave节点
  • master之间通过ping来监测彼此的健康状态
  • 客户端的请求可以访问集群任意节点,最终都会被转发到正确节点

工作细节:

  • Redis分片集群引入了哈希槽的概念,Redis集群有16384个哈希槽
  • 将16384个哈希槽分配到不同的master实例上
  • 读写数据:根据key的有效部分计算哈希值(有效部分:如果key前有大括号,那么有效部分就是大括号内的内容,如果没有,则以key本身作为有效部分),对16384取余,余数为插槽,寻找插槽所在的实例

相关文章:

Redis入门到精通(三):入门Redis看这一篇就够了

文章目录 Redis分布式锁的实现原理Redis实现分布式锁如何合理的控制锁的有效时常?**redisson实现的分布式锁**redisson实现的如何保证主从一致性 Redis的集群方案1.主从复制主从数据的同步原理全量同步增量同步 2.哨兵模式Redis的集群脑裂是什么?3.分片集…...

IP基本原理

IP的定义 当前唯一的网络层协议标准定义数据网络层的封装方式、编址方法 MTU 最大传输单元接口收发数据支持的单个包的最大长度不同二层链路类型的接口的MTU不一致。以太网接口默认MTU1500Byte。PPPoE接口默认MTU1480Byte。 IP头部封装格式 IP 头部长度不固定,2…...

数据分析题面试题系列2

一.如何估算星巴克一天的营业额 a.需求澄清:区域?节假日?产品范围? b.收入销售杯数*单价(营业时间*每小时产能*每小时产能利用率)*平均单价 Hypo该星巴克门店的营业时间为12小时(取整&#x…...

uniapp 单表、多级动态表单添加validateFunction自定义规则

uniapp 多级动态表单添加自定义规则 在uniapp制作小程序时,当涉及到需要设置validateFunction的校验规则时。可能遇到的问题 1、validateFunction不生效,没有触发 2、多层级表单怎么添加validateFunction自定义校验规则 本文将以单表单校验和多表单校…...

FPGA高端图像处理培训第一期,提供工程源码+视频教程+FPGA开发板

目录 1、FPGA图像处理培训现状分析2、本FPGA图像处理培训优势亮点架构全起点高实用性强项目应用级别细节恐怖工程源码清晰 3、本FPGA图像处理培训内容介绍图像处理基本框架图像前处理框架图像中处理框架图像前中处理框架图像后处理框架图像中后处理框架图像处理仿真框架视频教程…...

顺序表的实现(数据结构)——C语言

目录 1.结构与概念 2.分类 3 动态顺序表的实现 SeqList.h SeqList.c 创建SLInit: 尾插SLPushBack以及SLCheak(检查空间是否足够): 头插SLPushFront: 尾删SLPopBack 头删SLPopFront 查找指定元素SLFind 指定…...

【VUE】Vue中 computed计算属性和watch侦听器的区别

核心功能不同 computed 是一个计算属性,其核心功能是基于已有的数据属性计算得出新的属性值。当某个依赖的数据发生变化时,computed 会自动重新计算并更新自己的值。因此,可以将 computed 看做是一种“派生状态”。 watch 是一个观察者函数&…...

linux线程 | 同步与互斥 | 深度学习与理解同步

前言:本节内容主要讲解linux下的同步问题。 同步问题是保证数据安全的情况下,让我们的线程访问具有一定的顺序性。 线程安全就规定了它必须是在加锁的场景下的!!那么, 具体什么是同步问题, 我们加下来看看吧…...

Tkinter Frame布局笔记--做一个简易的计算器

#encodingutf-8 import tkinter import re import tkinter.messagebox import tkinter.simpledialog import sys import os def get_resources_path(relative_path):if getattr(sys,frozen, False):base_pathsys._MEIPASS#获取临时文件else:base_pathos.path.dirname(".&q…...

算法专题八: 链表

目录 链表1. 链表的常用技巧和操作总结2. 两数相加3. 两两交换链表中的节点4. 重排链表5. 合并K个升序链表6. K个一组翻转链表 链表 1. 链表的常用技巧和操作总结 常用技巧 画图!!! 更加直观形象, 便于我们理解引入虚拟头节点, 方便我们对链表的操作, 减少我们对边界情况的考…...

MySQL中关于NULL值的六大坑!你被坑过吗?

NULL值是我们在开发过程中的老朋友了,但是这个老朋友在MySQL中有很多坑,我通过这篇文章来总结分享一下,欢迎大家在评论区分享你的看法和踩坑经历。 1、NULL不等于NULL 在MySQL中,执行以下SQL会返回NULL 假如t表有以下数据&#…...

学生学习动机测试:激发潜能,引领未来

学习动机、学习兴趣和学习目标制定是影响学生学习成效的三个关键因素。通过对学生学习动机的测试,我们可以深入了解学生的学习状态,进而采取针对性的措施,激发他们的学习潜能,引导他们走向更加光明的未来。本文将从学习动机、学习兴趣和学习目标制定三个方面,详细探讨学生…...

基于SSM党务政务服务热线管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,部门管理,办事信息管理,信息记录管理,系统管理 前台账号功能包括:系统首页,个人中心,部门,信息…...

OSI参考模型详解:初学者指南与实践案例

OSI参考模型详解:初学者指南与实践案例 OSI(Open System Interconnect)参考模型是一个由国际标准化组织(ISO)提出的七层网络分层模型,它为全球所有互联计算机系统提供了一个通用的通信框架,解决…...

S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信 TCP 通信为面向连接的通信,需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信,在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ,在 S7-200 SMART 调用 Open User Communication …...

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。 java后端举例: PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…...

深度学习基础知识-02 数据预处理

深度学习的数据预处理通常包括: 1.数据清洗:去除错误或不完整的数据。 2.归一化:调整数据范围,如将像素值缩放到0-1。 3.数据增强:通过旋转、缩放等方法增加数据多样性。 4.数据划分:将数据分为训练集、验证…...

【CTF刷题9】2024.10.19

[MoeCTF 2021]babyRCE 考点&#xff1a;关键词过滤&#xff08;绕过方法参考往期博客&#xff09; 来源&#xff1a;nssctf <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\&g…...

WPF中的Setter

在 WPF (Windows Presentation Foundation) 中&#xff0c;Setter 是一个定义控件属性值的标记&#xff0c;通常用在 Style 或 Template 中。Setter 用于指定当某些条件满足时&#xff0c;控件的属性应该如何设置。以下是 Setter 的一些关键点&#xff1a; 属性设置&#xff1a…...

RabbitMQ下载与配置

安装Erlang Erlang 下载地址如下&#xff1a; https://erlang.org/download/otp_versions_tree.html 安装 RabbitMQ RabbitMQ 下载地址如下&#xff1a; https://www.rabbitmq.com/install-windows.html 查看服务&#xff0c;服务已经正常启动 打开Command Prompt 输入rabb…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...