Redis和三大消息队列

news2025/4/3 1:41:30

一、中间件核心概念解析

1. Redis

Redis是一种高性能的内存数据库,支持多种数据结构和持久化机制,常用于缓存、队列等场景。

(1)核心数据结构

数据结构特性与典型应用场景
String存储文本、数值(如计数器),支持原子操作(INCRINCR)
Hash存储对象(如用户信息:user:id:1→{name:"Alice",age:25}user:id:1→{name:"Alice",age:25})
List双向链表,实现队列(LPUSH/RPOPLPUSH/RPOP)或栈(LPUSH/LPOPLPUSH/LPOP)
Set无序集合,支持交并差集操作(如去重、共同好友)
ZSet有序集合,按分值排序(如排行榜:ZADDleaderboard100"user1"ZADDleaderboard100"user1")
HyperLogLog基数统计(估算不重复元素数量,误差约0.81%0.81%)

(2)持久化机制

  • RDB(快照)

    • 定时生成内存数据快照(二进制文件)。
    • 优点:恢复速度快,适合备份。
    • 缺点:可能丢失最后一次快照后的数据(如宕机时)。
  • AOF(追加日志)

    • 记录所有写操作命令(文本日志)。
    • 优点:数据丢失风险低(可配置每秒同步)。
    • 缺点:文件体积大,恢复速度慢。

(3)缓存问题与解决方案

问题现象解决方案
穿透查询不存在的数据(如恶意攻击)布隆过滤器(快速判断数据是否存在)
击穿热点数据过期后,高并发请求压垮数据库互斥锁(仅允许一个线程重建缓存)
雪崩大量缓存同时过期,导致数据库瞬时压力激增设置随机过期时间(如基础时间+随机偏移基础时间+随机偏移)


2. 消息队列

消息队列用于解耦系统组件,实现异步通信与流量削峰。

(1)Kafka

  • 核心机制
    • 分区与副本
      • 每个主题(Topic)分为多个分区(Partition),支持水平扩展。
      • 每个分区有多个副本(Replica),主副本(Leader)处理读写,从副本(Follower)同步数据。
    • ISR列表
      • In-Sync Replicas(同步副本列表),只有ISR中的副本可参与选举Leader。
      • 保障数据一致性:生产者需等待所有ISR副本确认写入(acks=allacks=all)。

(2)RabbitMQ

  • 核心特性
    • Exchange路由模型:通过直连(Direct)、主题(Topic)、扇出(Fanout)等Exchange类型路由消息。
    • 消息确认机制:消费者手动ACK确认消息处理完成,避免消息丢失。

(3)RocketMQ

  • 核心功能
    • 事务消息
      1. 生产者发送半消息(暂存至Broker)。
      2. 执行本地事务并提交结果。
      3. Broker根据结果提交或回滚消息。
    • 延迟消息:支持18个预设延迟级别(如1s、5s、10s),定时触发消息消费。

二、对比与总结

中间件核心优势典型场景
Redis高性能内存操作,丰富数据结构缓存、计数器、实时排行榜
Kafka高吞吐量,分区与副本保障可靠性日志收集、流处理、大数据管道
RabbitMQ灵活的路由机制,强一致性保障企业级异步通信、复杂路由场景
RocketMQ事务消息与延迟消息支持,阿里生态集成电商订单、金融交易等强一致性场景

三、Redis阻塞

Redis阻塞是指客户端请求在Redis服务器中无法及时得到响应的现象。以下是常见的阻塞原因及解决方法,按优先级排列:

1. 慢查询阻塞
  • 原因:执行时间复杂度为O(N)O(N)的命令(如KEYS *、全量HGETALL)操作大Key
  • 解决方案:
    • 使用SLOWLOG get分析慢查询日志
    • SCAN代替KEYS,分批获取数据
    • 对大Key进行拆分(如Hash拆分为多个小Hash)
2. 持久化阻塞
  • RDB阻塞
fork()操作耗时 = 内存数据量 / fork速度(如10GB/200MB/ms≈50ms)

使用info stats查看latest_fork_usec指标

  • AOF阻塞
    • appendfsync always模式会导致每次写操作都刷盘
    • 建议生产环境使用appendfsync everysec
3. 内存交换(Swap)阻塞
  • 当物理内存不足时,Redis数据会被换出到磁盘
  • 检测方法:
redis-cli info | grep process_id  # 获取PID
cat /proc/[PID]/smaps | grep Swap
    • 解决方案:增加内存或设置vm.overcommit_memory=1
    4. 网络I/O阻塞
    • 现象:redis-cli --latency检测延迟突增
    • 常见原因:
      • 单线程处理突发大流量
      • 千兆网卡带宽打满(理论峰值12MB/s)
    • 解决方案:使用集群分片或升级万兆网卡
    5. 主从同步阻塞
    • 全量同步时主库执行bgsave+传输RDB文件
    • 优化方法:
      • 设置repl-backlog-size增大复制积压缓冲区
      • 适当调大client-output-buffer-limit slave
    6. Lua脚本阻塞
    • Redis单线程执行Lua脚本时,会阻塞其他命令
    • 必须保证脚本时间复杂度为O(1)O(1)或O(logN)O(logN)
    • 使用SCRIPT KILL可终止非写操作的脚本

    问题排查步骤
    1. 使用redis-cli --latency检测基线延迟
    2. 通过top查看CPU和内存使用情况
    3. 执行info commandstats分析命令耗时分布
    4. 使用redis-cli monitor > commands.log记录实时命令(慎用)
    5. 检查/var/log/redis/redis-server.log中的警告信息

    最佳实践
    • 生产环境禁用KEYSFLUSHALL等危险命令
    • 设置timeout 30自动关闭空闲连接
    • 使用连接池控制最大连接数
    • 对大于10KB的值进行压缩处理
    • 监控内存碎片率mem_fragmentation_ratio > 1.5时需重启)

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

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

    相关文章

    UE5学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针

    文章目录 一主菜单搭建UI显示主菜单时,暂停游戏,显示鼠标绑定按钮 二 打开主菜单 一主菜单 搭建UI 添加一个MainUi的控件 添加一个返回游戏的按钮和一个退出游戏的按钮 修改一下样式,放中间 显示主菜单时,暂停游戏&#xff0…

    LLM - 开源强化学习框架 OpenR1 的环境配置与训练参数 教程

    欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/146838740 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 OpenR1 是一个开源的强化学习框架,复现 DeepSeek-R1 的训练流程,为研…

    蓝桥杯备赛之枚举

    用循环等方式依次去枚举所有的数字组合,一一验证是否符合题目的要求 题目链接 0好数 - 蓝桥云课 题目解析 好数的概念: 数的奇数位位奇数,偶数位为偶数,就是一个好数 求输入n里面有多少个好数 题目原理 1> 遍历每个数 2> 每次遍历判断是不是好数 把这…

    C++编程语言:抽象机制:一个矩阵的设计(Bjarne Stroustrup)

    第29章 一个矩阵的设计(A Matrix Design) 目录 29.1 引言 29.1.1 基本的 Matrix 用法 29.1.2 Matrix 的要求 29.2 一个 Matrix 模板 29.2.1 构造和赋值(Construction and Assignment) 29.2.2 下标和分片(Subscripting and Slicing) 29.3 Matrix算术运算(Matrix…

    MSYS2学习笔记

    前言 本文内容是MSys2 Documentation的学习笔记可以使用MSYS2编译QGis 学习笔记 什么是MSYS2? MSYS2(Minimal System 2)是一个为Windows平台打造的软件开发环境和包管理系统,它结合了Cygwin的POSIX兼容层、Arch Linux的pacman…

    合规+增效 正也科技携智能营销产品出席中睿论坛

    正也科技作为医药数字化领域的标杆企业,受邀参展第二届中睿医健产业企业家年会暨第十三届中睿医药新春论坛,本次论坛以“合力启新程”为主题,吸引了800多位医药健康企业的董事长、总经理参与,并通过主论坛、分论坛、路演等形式探讨…

    计算机网络 TCP/IP参考模型

    目录 TCP IP模型预览 OSI和TCP的相同点 OSI和TCP的不同点 层参考模型 层参考模型的数据封装与解封装 TCP IP模型预览 OSI和TCP的相同点 OSI和TCP的不同点 层参考模型 层参考模型的数据封装与解封装

    JSON的基础知识

    文章目录 前言json协议的基本格式json 数组类型 的语法规则json协议报文的实例json常见的一些格式错误在gd32中使用cjson库小结 前言 json协议在互联网应用,物联网应用中都会用到。所谓工欲善其事必先利其器,我们需要学习了解json协议的具体格式&#xf…

    区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测

    区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区…

    11 配置Hadoop集群-免密登录

    第一课时 一、复习导入 前面的课程中我们在虚拟机上安装并测试使用了hadoop的示例程序wordcount,并且在准备好了集群的同步工具,那接下来,我们就可去配置hadoop集群了。 二、授新 (一)认识ssh命令 SSH(Secu…

    13 配置Hadoop集群-测试使用

    第一课时 一、导入 前面的课程我们搭建了hadoop集群,并成功启动了它,接下来我们看看如何去使用集群。 测试的内容包括:1.上传文件,2.下载文件,3.运行程序 二、授新 (一)上传小文件 上传文件的时…

    简单ELK框架搭建

    简介 ELK 框架是一套开源的日志管理和分析工具,由 Elasticsearch、Logstash 和 Kibana 三个主要组件组成,现在新增了Filebeat组件,可以更高效的收集数据。 Elasticsearch:是一个分布式、高可扩展的开源搜索引擎,能快速…

    Vue2和Vue3响应式的基本实现

    目录 简介Vue2 响应式Vue2 响应式的局限性 Vue3 响应式Vue3 响应式的优点 Vue2 和 Vue3 响应式对比 简介 在 Vue 框架中,数据的响应式是其核心特性之一。当页面数据发生变化时,我们希望界面能自动更新,而不是手动操作 DOM。这就需要对数据进…

    RCE(自增、取反、异或)

    自增: 也就是说,a > b,b > c... 所以,我们只要能拿到一个变量,其值为a,通过自增操作即可获得a-z中所有字符。 无字母数字构造: 所有敏感字符串(ASSERT、_POST)通过自增动态生…

    【深度学习新浪潮】图像修复(Image Inpainting)技术综述:定义、进展与应用展望

    本文为精简版,完整技术细节与参考文献可与作者讨论。 1. 图像修复的定义与核心目标 图像修复(Image Inpainting)是一种通过算法手段填补图像中缺失区域或移除不需要对象的技术,其核心目标是利用图像上下文信息生成与周围像素一致且视觉自然的内容。该技术通过计算机视觉和…

    计算机视觉——传统数字图像处理中图像去噪原理与代码实现细节

    1. 概述 在现实世界中捕获的图像常常受到噪声的影响,这些噪声可能来源于环境因素、信号不稳定、相机传感器问题、照明条件差、电损失等多种因素。为了进一步处理这些图像并对结果进行准确解释,拥有尽可能低噪声的图像至关重要。图像去噪是数字图像处理中…

    【STM32】最后一刷-江科大Flash闪存-学习笔记

    FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程,(系统存储器用于存储原厂写入的BootLoader程序,用于串口…

    JS实现动态点图酷炫效果

    实现目标 分析问题 整个图主要是用canvas实现,其中难点是将线的长度控制在一定范围内、并且透明度随长度变化。 前置知识 canvas绘制点、线、三角形、弧形 // 点ctx.moveTo(this.x, this.y);ctx.arc(this.x, this.y, this.r,0, 2 * Math.PI, false);ctx.fillStyle …

    【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【思路篇】A题解题全流程(持续更新)

    【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路(持续更新) 写在前面: 1、A题、C题将会持续更新,陆续更新发布文章 2、赛题交流咨询Q群:1037590285 3、全家桶依旧包含: 代码、…

    爱普生晶体单元FC2012AN在5G RedCap中的应用

    在 5G 技术向物联网领域深度渗透的今天,RedCap(5G 轻量化)作为衔接中高速物联网场景的关键技术,正加速推动工业、医疗、可穿戴等领域的智能化升级。爱普生 FC2012AN 低 ESR 晶体单元凭借其突破性的小尺寸、低功耗与高稳定性设计&a…