redis随笔记

缓存穿透。key不存在。恶意攻击、代码问题。加布隆过滤器,或者为空就返回。

缓存失效(击穿)。key刚好过期。缓存时间随机数。

缓存雪崩。缓存层宕机,一下子袭击数据库。缓存高可用、限流熔断、提前演练。

 

布隆过滤器就是一个key通过多个hash计算到多个数组所在位置,每个位置设为1,如果来了一个key,通过多个hash计算,如果所有位置都为1,过关,但只要有一个位置不为1,不过关。

 

nx的意思是,如果不存Key,则set,否则返回false。常有用于锁,资源只能被一次只能被一个客户端使用

redis.set(Key, "1", "ex 180", "nx"))

 

HyperLogLog,高并发用,愿意牺牲一些正确性,但存储空间小。用于原理是最大似然估计。用于记录uv(一天有多少人访问过这个网站,去重)。pfadd、pfcount、pfmerge

 

事务。watch乐观锁、multi开始事务、exec结束事务、discard丢弃缓存队列中命令(类似回滚,但不回滚

4a3e48d253ae4e2b82caead36ea4feda.png

 

复制缓冲区(OutputBuffer)有多份,有多少个从节点就有多少份在主节点上。用于主节点rbd给从节点时增量的数据存储,rbd后,再把复制缓冲区内容发送过去。复制积压区(ReplicationBacklog),是只有一份,记录主节点给从节点发送的增量写命令,从节点需要增量同步的时候,通过偏移量来复制积压去获取。

复制缓冲区(OutputBuffer)

定义与作用

  • 复制缓冲区是Redis为客户端(在复制场景下,主要是从节点)分配的缓冲区。每个从节点都会有一个对应的复制缓冲区,用于存放全量复制过程中主节点开始执行bgsave到从节点载入rdb文件这个时间段中主节点的写命令。
  • 这些命令在从节点载入rdb文件后,会被用来执行增量同步,以确保从节点的数据与主节点保持一致。

大小限制与保护机制

  • 复制缓冲区的大小可以通过配置client-output-buffer-limit来控制,对于从节点(slave)来说,默认的大小限制是256MB,如果连续60秒缓冲区大小超过64MB,则主节点会断开与该从节点的连接。
  • 这些限制是为了防止因为单个从节点的问题导致主节点消耗过多内存,从而影响整个Redis集群的稳定性。

注意事项

  • 如果主节点的数据量过大或者网络延迟过高,可能会导致复制缓冲区溢出,进而引发主从连接中断。
  • 在设计和部署Redis集群时,需要根据实际情况调整复制缓冲区的大小限制,以平衡数据一致性和系统稳定性。

复制积压区(ReplicationBacklog)

定义与作用

  • 复制积压区是主节点上的一个固定长度的队列,用于保存最近发送给从节点的写命令。这个队列是先进先出的,因此可以保存最近一段时间内的写命令数据。
  • 当从节点与主节点的连接断开并重新连接时,如果它们之间的数据差异在复制积压区的范围内,那么从节点可以通过增量同步的方式快速追上主节点的数据。

大小与配置

  • 复制积压区的大小可以通过配置repl-backlog-size来设置,默认大小为1MB。
  • 需要注意的是,复制积压区的大小会影响增量同步的效率和范围。如果复制积压区太小,可能会导致从节点无法找到足够的数据进行增量同步,从而需要执行全量同步。

工作原理

  • 当主节点接受到写命令时,它不仅会将命令发送给从节点,还会将命令写入复制积压区。
  • 如果从节点断开连接并重新连接,它会向主节点发送自己的复制偏移量(即最后一次成功接收的命令的偏移量)。
  • 主节点会根据这个偏移量在复制积压区中找到对应的命令数据,并将这些数据发送给从节点进行增量同步。

综上所述,Redis的复制缓冲区和复制积压区在主从复制过程中起着关键的作用。它们通过不同的机制来确保数据的一致性和系统的稳定性。在设计和部署Redis集群时,需要根据实际情况合理配置这两个组件的大小和参数。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python版《超级玛丽+源码》-Python制作超级玛丽游戏

小时候最喜欢玩的小游戏就是超级玛丽了,有刺激有又技巧,通关真的很难,救下小公主还被抓走了,唉,心累,最后还是硬着头皮继续闯,终于要通关了,之后再玩还是没有那么容易,哈…

从并发20到并发120之laravel性能优化

调优成果 遇到问题 单台服务并发20,平均响应时间1124ms,通过htop观察,发现cpu占用率达到100%(包括sleep的进程),内存几乎没怎么用。 调优后 单机最大吞吐量达到120 响应时长不超过1000ms 硬件信息 …

EfficientFormer 系列算法

1. EfficientFormer V1 模型 论文地址:https://proceedings.neurips.cc/paper_files/paper/2022/file/5452ad8ee6ea6e7dc41db1cbd31ba0b8-Paper-Conference.pdf EfficientFormer V1 基于 ViT 的模型中使用的网络架构和具体的算子,找到端侧低效的原因。然…

高性能web服务器nginx

目录 nginx简介 服务端 I/O 流程 Nginx 进程结构 Nginx启动流程 nginx的源码编译下载 nginx命令常见参数 nginx的配置文件详解 全局配置优化 nginx的平滑升级和回滚 nginx目录匹配优先级测试(因为只支持访问文件,所有不比对匹配目录优先级&…

五、2 移位操作符赋值操作符

1、移位操作符 2、赋值操作符 “ ”赋值,“ ”判断是否相等 1)连续赋值 2)复合赋值符

C ++初阶:类和对象(上)

目录 🌞0.前言 1. 面向过程和面向对象初步认识 2..类的引入与定义 2.1类的引入 2.2类的定义 3.类的访问限定符及其封装 3.1访问限定符 3.2封装 4.类的作用域 4.1加餐和发现 5.类的实例化 6.类对象大小的计算 6.1.内部的存储方式 6.2结构体对齐规则回顾…

一、什么是 mvvm? MVC、MVP、MVVM三种模式的区别与详解

简介 MVC、MVP、MVVM都是常见的软件架构模式。 MVC(Model-View-Controller)架构模式中,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller&…

STM32自制手持小风扇实验

1.1 介绍: 实验功能说明:功能(1)按一下按键小风扇开启,再按一下关闭。 功能(2)按一下按键小风扇一档风速,再按一下二挡,依次三挡…关闭。 按键模块说明:按下…

什么是AR、VR、MR、XR?

时代背景 近年来随着计算机图形学、显示技术等的发展,视觉虚拟化技术得到了广泛的发展,并且越来越普及化,慢慢的也走入人们的视野。目前市场上视觉虚拟化技术的主流分为这几种 VR、AR、MR、XR。这几项技术并不是最近才出现的,VR的…

路由器VLAN配置(H3C)

路由器VLAN配置(H3C) 控制页面访问 路由器默认处于192.168.1.1网段(可以短按reset重置),如果要直接使用需要设置静态IP处于同一网段; 对路由器进行配置也要将电脑IP手动设置为同一网段; 默…

执行rasa shell 遇到asyncio.exceptions.TimeoutError报错

在《树莓派3B运行rasa init和rasa shell遇到的tensorflow报错总结》一文中,我遇到的第7个报错是首次运行rasa shell时候碰到的。按照我在文中记录的解决方案,处理成功。 结果,今天我又一次遇到了asyncio - Task exception was never retrie…

91. 解码方法 -dp4

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/decode-ways/description/ 示例 1: 输入:s &…

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

概述 为什么大家总觉得KMP难?难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组定义和模式串回滚策略,把一切都懂得特别混乱。很多时候初学者的难点根本不在于这个算法本身,而是它令人痛苦的百花齐放的定义。 有…

ee trade:黄金投资与股票投资的区别

黄金和股票, 是金融市场中两种常见的投资工具, 它们拥有截然不同的特点和风险, 了解它们的差异, 可以帮助投资者制定更合理的投资策略。 一、 投资性质: 避险与成长, 两种投资方向 黄金: 被视…

【C++】入门篇一

【C】入门篇一 一 .缺省参数1.缺省参数的概念2. 缺省参数分类 二. 函数重载1. 函数重载概念2.函数重载代码举例 三.引用1.引用的概念2. 引用特性3. 常引用4. 使用场景(1). 做参数(2). 做返回值 5. 传值、传引用效率比较6. 引用和指针的区别7.引用和指针的不同点 一 .缺省参数 …

如何将MySQL迁移到TiDB,完成无缝业务切换?

当 MySQL 数据库的单表数据量达到了亿级,会发生什么? 这个现象表示公司的业务上了一个台阶,随着数据量的增加,公司规模也进一步扩大了,是非常喜人的一个改变 ,然而随之而来的其他变化,就没那么…

Python | Leetcode Python题解之第354题俄罗斯套娃信封问题

题目: 题解: class Solution:def maxEnvelopes(self, envelopes: List[List[int]]) -> int:if not envelopes:return 0n len(envelopes)envelopes.sort(keylambda x: (x[0], -x[1]))f [1] * nfor i in range(n):for j in range(i):if envelopes[j]…

全液冷服务器革命:CPU、内存、PCIe高效散热新方案

在国家十四五规划大力发展数字经济的背景下,数据中心作为算力的核心载体,其基础设施成为支撑数字经济的“数字底座”,但同时也面临巨大的碳排放压力。随着芯片与服务器功耗的上升,单机柜功率密度不断增大,传统风冷散热…

深度学习设计模式之享元设计模式

文章目录 前言一、介绍二、特点三、详细介绍1.核心组成2.代码示例3.优缺点优点缺点 4.使用场景 总结 前言 享元设计模式主要用于减少创建对象的数量,以减少内存占用,提高性能。 一、介绍 享元设计模式(Flyweight Pattern)是一种…

Hexo通过GitHub设置自定义域名

本身GitHub也是支持自定义域名的,本次教程将讲解如何使用GitHub自带的自定义域名解析。 1. GitHub设置 1.1 登录GitHub账号 登录GitHub账号,找到名称为 用户名.github.io的仓库,并点击进入。 1.2 进入Settings页面 点击如图的Settings按…