【Redis】使用Redis实现消息队列

2023-10-29

一、两个消息模型

队列模型

队列模型如图所示,它具有以下几个特点,就像我们用微信和好友(群聊除外)聊天一样,微信就是这个队列,我们可以和很多个好友聊天,但是每条消息只能发给一个好友。

只有一个消费者将获得消息
生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态。
每一个成功处理的消息都由接收者签收。
在这里插入图片描述

发布/订阅模型

发布/订阅模型如图所示,不用说,和订阅公众号是一样的。

多个消费者可以获得消息
在发布者和订阅者之间存在时间依赖性。发布者需要建立一个topic,以便客户能够购订阅。订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅。在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。
在这里插入图片描述

二、redis如何实现

对于队列模型,我们可以使用redis的list数据结构,通过LPUSH和RPOP来实现一个队列。
发布/订阅模型就更简单了,redis官方就支持,而且还可以使用PSUBSCRIBE支持模式匹配,使用如下命令,即可订阅所有f开头的订阅,具体可查看文档。

首先得介绍一下spring-data-redis中的两种template的默认serializer,当然spring还提供其他的序列化器,具体可查看文档,也可以自己实现RedisSerializer接口,构建自己的序列化器。
在这里插入图片描述
在这里插入图片描述

若本篇内容对您有所帮助,请三连点赞,关注,收藏支持下。

创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

安逸 | 文

如果本篇博客有任何错误,请批评指教,不胜感激 !

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Redis】使用Redis实现消息队列 的相关文章

  • SAML 服务提供商 Spring Security

    当使用预先配置的服务提供者元数据时 在 Spring Security 中 是否应该有 2 个用于扩展元数据委托的 bean 定义 一份用于 IDP 元数据 一份用于 SP 元数据
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • C++ STL 互斥体

    mutex 互斥量 非定时的互斥体类 标准库包含两个非定时的互斥体类 std mutex std recursive mutex 每个类都支持下列方法 lock 阻塞直到取到锁 trylock 立刻返回获取锁结果 unlock 已经拥有st
  • linux线程学习(二)

    上一个linux线程学习是不带锁的线程不安全形式 只要不用共享资源还是可以的 但实际工作中我们遇到的往往是需要保障线程的访问的 因此这里实现了一个简单的线程池 为线程池的实现提供思路 Status类封装了环境变量与锁 作为一种状态保障线程的
  • Python错误:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte...

    错误提示如下 tf2 C Users user gt python Python 3 7 6 packaged by conda forge default Mar 5 2020 14 47 50 MSC v 1916 64 bit AMD
  • libcurl教程

    这个文档是小编在curl官网上使用谷歌翻译翻译的 详细信息看官网 curl 基本描述 本文档试图描述使用 libcurl 编程时要考虑的一般原则和一些基本方法 本文将主要关注 C 接口 但可能会很好地适用于其他接口 也会讲解一些个C接口相似
  • mongodb设置账号密码授权案例

    1 给admin授权管理员权限 gt use admin gt db createUser user admin pwd 123456 roles role root db admin 如果需要修改admin密码 gt db changeU
  • 链表有环(引申题:环在哪里)

    public class Test private static class ListNode int value ListNode next public static boolean hasCycle ListNode head if
  • 采集校园卡消费信息可视化(安徽工商职业学院)

    闲的没事干 分析下我自己的一卡通消费信息 使用了以下技术进行数据分析并且环境已经搭建好 Hadoop hive mysql sqoop centos7 python zeppelin 思路 python爬自己的消费记录 存入到mysql s
  • pthread函数总结

    概括 https www cnblogs com tianzeng p 8934060 html
  • linux 运行scrapy,linux下部署scrapy

    1 如何部署scrapy 下载scrapy client 下载地址 https github com scrapy scrapyd client 并进行安装 安装命令 python setup install 进入项目目录 执行scrapy
  • 【Unity3D日常BUG】Unity3D中出现“动画片段必须标记为Legacy的警告”消除方法

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好 我是佛系工程师 恬静的小魔龙 不定时更新Unity开发技巧 觉得有用记得一键三连哦 一 前言 在开发中可能会遇到下面的警告 The Ani
  • 关于interface(接口继承)extends(接口)interface的问题

    前序 一直以来 我们学习java就被灌输了一个观点 类和抽象类 class 只能被继承 extends 接口 interface 只能被实现 implements 有个概念我们一直没有弄懂的是 类 class 可以实现接口 interfac
  • 刘积仁资本阳谋:东软熙康通过上市聆讯,三年亏损8亿元

    大数据产业创新服务媒体 聚焦数据 改变商业 9月中旬 第四次递表的东软熙康通过港交所上市聆讯 预计在9月30日之前完成IPO 作为国内首家以城市为入口的云医院平台厂商 东软熙康的互联网医疗服务包括互联网医院 远程医疗 智慧家庭医生 互联网居
  • 计算机科学和Python编程导论(二 ) Python简介

    基本概念 1 编程语言的分类 低级编程与高级编程 二者之间的区别是 编写程序时 我们是使用机器层次的指令和数据对象 底层操作 还是使用语言设计者提供的更为抽象的操作 图形用户界面 UI 通用性与专注于某一应用领域 指编程语言中的基本操作是广
  • 【yolo】makesense操作

    https www makesense ai 成功
  • 集团税务共享化、数字化系统如何选型(一)

    随着国家对于企业税务营改增的全面开启 再到国地税合并 金税三期全面建成 同时国家逐级推出发票电子化到专票电子化 标志着国家对发票全面升级为电子化 数字化 伴随着金税四期的开始并逐步落地 国家对企业的税收管理也原有的稽查转变为数字化 智能化的
  • 【100天精通Python】Day45:Python网络爬虫开发_ Scrapy 爬虫框架

    目录 1 Scrapy 的简介 2 Scrapy选择器 3 快速创建Scrapy 爬虫 4 下载器与爬虫中间件 5 使用管道Pielines lt
  • Java语言基础

    文章目录 1 开发环境 1 1 认识开发环境JDK 1 2 JDK JRE JVM关系 1 3 JDK1 8本地安装目录 1 3 1 bin 1 3 2 include 1 3 3 lib 1 3 4 conf 1 3 5 src 1 4
  • 32为什么还有 kill 不掉的语句?

    文章目录 32 为什么还有 kill 不掉的语句 收到 kill 以后 线程做什么 另外两个关于客户端的误解 小结 上期问题时间 32 为什么还有 kill 不掉的语句 在 MySQL 中有两个 kill 命令 一个是 kill query
  • 两个应用程序之间的通信

    应用程序之间的数据交换 互相通讯 一直是困扰广大程序员的难题 尽管已经出现了各式各样的解决方案 但迄今为止没有哪一种方案是完美无缺的 因此 只有学习并了解了它们的优缺点后 才能在特定的情况下选择最佳方案 以满足最终的要求 1 共享 在硬盘上
  • 【Redis】使用Redis实现消息队列

    一 两个消息模型 队列模型 队列模型如图所示 它具有以下几个特点 就像我们用微信和好友 群聊除外 聊天一样 微信就是这个队列 我们可以和很多个好友聊天 但是每条消息只能发给一个好友 只有一个消费者将获得消息 生产者不需要在接收者消费该消息期