在 Redis 5.0 之前消息队列的实现方式有很多种,比较常见的除了我们上文介绍的发布订阅模式,还有两种:List 和 ZSet 的实现方式。

List 和 ZSet 的方式解决了发布订阅模式不能持久化的问题,但这两种方式也有自己的缺点,接下来我们一起来了解一下,先从 List 实现消息队列的方式说起。

List 版消息队列

List 方式是实现消息队列最简单和最直接的方式,它主要是通过 lpush 和 rpop 存入和读取实现消息队列的,如下图所示:

List 使用命令的方式实现消息队列:

127.0.0.1:6379> lpush mq "hello" #推送消息 hello
(integer) 1
127.0.0.1:6379> lpush mq "msg" #推送消息 msg
(integer) 2
127.0.0.1:6379> rpop mq #接收到消息 hello
"hello"
127.0.0.1:6379> rpop mq #接收到消息 msg
"mq"

其中,mq 就相当于频道名称 channel,而 lpush 用于生产消息, rpop 拉取消息。

代码实现

接下来我们用 Java 代码的方式来实现 List 形式的消息队列,源码如下:

import redis.clients.jedis.Jedis;public class ListMQExample {public static void

消息队列的其他实现方式相关推荐

  1. javax消息队列_java实现消息队列的两种方式(小结)

    实现消息队列的两种方式 Apache ActiveMQ官方实例发送消息 下载解压后拿到java代码实例 然后倒入IDE 如下: 请认真阅读readme.md文件,大致意思就是把项目打成两个jar包,然 ...

  2. zset 怎么get_Redis消息队列的若干实现方式

    原标题:Redis消息队列的若干实现方式 内存 比如要推送一条全局消息,如果真的给所有用户都推送一遍的话,那么会占用很大的内存,实际上不管粘性有多高的产品,活跃用户同全部用户比起来,都会小很多,所以如 ...

  3. Redis实现消息队列的几种方式

    Redis消息队列的几种方式 1 基于rpush+lpop list类似于java中的linkedList .如果插入头或者尾的话,时间复杂度为O(1),在其他地方插入需要O(n).查询也是一样.所以 ...

  4. redis实现消息队列的几种方式及其优劣

    概述 常用的消息队列有,rabbitMq.kafka.RocketMq.ActiveMq等.这些消息队列需要独立安装部署,作为一个中间件来提供服务,虽然有着高性能.高可靠的优点,但是额外部署这些中间件 ...

  5. 2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 消息队列和Kafka的基本介绍 一.什么是消息队列 二.消息队列的应用场景 ...

  6. linux进程间通信:POSIX 消息队列 ----异步通信

    在上一篇中linux进程间通信:POSIX 消息队列我们知道消息队列中在消息个数达到了队列所能承载的上限,就会发生消息的写阻塞. 阻塞式的通信影响系统效率,进程之间在通信收到阻塞时并不能去做其他事情, ...

  7. 干货 | 金融级消息队列的演进 — 蚂蚁金服的实践之路

    小蚂蚁说: 消息队列作为一个数据的集散中心,承载了越来越多的场景和数据,从最开始的 OLTP 到 OLAP,甚至再到物联网.人工智能.机器学习等场景,都有很大的想像空间. 在能力上,消息队列现在拥有了 ...

  8. 消息队列之延时消息应用解析及实践

    简介:消息队列常用于实现业务需要的异步.解耦以及削峰功能.但在某些特殊的业务场景中,还需要消息队列服务本身支持一些特殊的消息类型,比如常见的延时消息.本次直播为您深入剖析延时消息的特性.应用场景,对比 ...

  9. Java面试题消息队列

    消息队列的架构图: 生产者发送消息的流程: --  消息的发送者(Producer)和RabbitMQ建立连接,获取通道. --  生产者发送消息到指定虚拟机中的交换机(exchange), --  ...

最新文章

  1. 【HDOJ】3487 Play with Chain
  2. Linux双机热备解决方案之Heartbeat
  3. arduino 中断例程
  4. JS中的加号+运算符详解
  5. Scrapy运行中常见网络相关错误
  6. tcp协议的主要功能是什么_前端要知道的网络知识一:TCP/IP 协议到底在讲什么...
  7. Spring Boot笔记-发送消息给RabbitMQ
  8. LA 3882 And Then There Was One
  9. android intent sender,Android7.0以上调PendingIntent.getIntent()报错
  10. Python读取指定文件夹下指定类型数据的文件名并保存到TXT文件中
  11. MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
  12. java解决中文乱码的几种写法
  13. 【grasshopper自定义电池开发】使用Visual Studio 2022借助官方扩展插件开发一个贪吃蛇电池
  14. 读写器APDU指令读写FM1208CPU卡
  15. CPU寻址能力的理解
  16. 想提高棋艺?试试这款围棋AI
  17. 如何切换到root用户
  18. 【Socket】苍老师有了丈夫,我也有了SAEA
  19. 计算机应用的时间识别的,计算机人工智能识别关键技术及运用
  20. android 瀑布流 的实现

热门文章

  1. dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
  2. 面试题2021-2-24
  3. 【模拟】Ingenious Lottery Tickets
  4. 前端页面:一直报Cannot set property 'height' of undefined
  5. mysql学习笔记(1-安装简介)
  6. Linux下java环境及tomcat部署
  7. 关于ASP.NET 中的主题
  8. 企业网站 源码 e-mail_天津seo优化套餐服务收费_天津网站优化关键词价格
  9. VMware配置额外内存设置
  10. Spring IOC容器【p名称空间注入属性值 】