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

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集群时,需要根据实际情况合理配置这两个组件的大小和参数。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 位运算使用
  • 汇编语言lea指令取数组偏移地址
  • C++:priority_queue类
  • JavaScript class和正则
  • 10天速通Tkinter库——Day 5:使用config进行OptionMenu美化
  • Minio web控制台实现授权管理
  • 使用 nginx 搭建代理服务器(正向代理 https 网站)指南
  • 【Java】—— 使用Java编写程序找出100以内的质数
  • 理解类方法和静态方法:Python 中的高级函数
  • Nginx负载均衡调度状态
  • 哇哦--一起学习接口叭
  • XSS总结知识点+例题实操
  • 探索 HarmonyOS 的层叠布局:灵活的 Stack 容器
  • Vmware WorkStations 17 ,centos 安装 vmware tools
  • FFmpeg的入门实践系列一
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • EventListener原理
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java 内存分配及垃圾回收机制初探
  • Javascript编码规范
  • Laravel 中的一个后期静态绑定
  • php ci框架整合银盛支付
  • react 代码优化(一) ——事件处理
  • redis学习笔记(三):列表、集合、有序集合
  • storm drpc实例
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 阿里云前端周刊 - 第 26 期
  • 包装类对象
  • 批量截取pdf文件
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 三栏布局总结
  • 一文看透浏览器架构
  • 硬币翻转问题,区间操作
  • 智能合约Solidity教程-事件和日志(一)
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #if #elif #endif
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • (1)Jupyter Notebook 下载及安装
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .bat批处理出现中文乱码的情况
  • .form文件_一篇文章学会文件上传
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 的缓存方案
  • .Net Core 中间件验签