简述

在本博客中,我们将会创建一个reids的消息队列,Redis可以被当成消息队列使用。消息会被存放在一个key-value集合中。

redis消息生产者使用RPUSH命令将消息添加到队列的尾部,而消息消费者可以使用BLPOP命令获取列表开头的消息,使用FIFO(先进先出)规则。

注意:本博客前置条件,熟悉redis并且知道如何启动redis服务器

Redis 队列实现需要的maven依赖

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.leftso.redis

message-queue

1.0.0-SNAPSHOT

REDDIS - ${project.artifactId}

http://leftso.com

redis.clients

jedis

2.7.2

Redis消息队列生产者

我们先使用rpush()方法将消息发布到mq-key队列中。这条消息将会添加到列表的最末端。

import redis.clients.jedis.Jedis;

public class MessageProducer {

public static void main(String... args) {

Jedis jedis = new Jedis("localhost");

jedis.rpush("mq-key", "first message");

jedis.rpush("mq-key", "second message");

jedis.rpush("mq-key", "third message");

}

}

Redis消息队列消费者

我们可以使用lpop()或者blpop()方法来消费消息。下面我们将会使用阻塞的lpop 方法,就如方法名称一样,使用该方法线程会进入阻塞状态直到下一个消息过来。我们可以设置一个等待消息的超时时间。下面设置的超时时间为0,表示永久等待没有超时时间。

import redis.clients.jedis.Jedis;

import java.util.List;

public class MessageConsumer {

private static final int TIMEOUT = 0;

public static void main(String... args ) {

Jedis jedis = new Jedis("localhost");

while(true){

System.out.println("Waiting for a message in the queue");

List messages = jedis.blpop(TIMEOUT, "mq-key");

System.out.println("received message with key:" + messages.get(0) + " with value:" + messages.get(1));

}

}

}

启动消息队列消费者

$title(console)

Waiting for a message in the queue

启动消息队列生产者

$title(console)

Waiting for a message in the queue

received message with key:mq-key with value:first message

Waiting for a message in the queue

received message with key:mq-key with value:second message

Waiting for a message in the queue

received message with key:mq-key with value:third message

Waiting for a message in the queue

参考文档:

redis java 队列_Redis 队列 Java调用简单实现相关推荐

  1. redis 队列_Redis系列5实现简单消息队列

    任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容. 我们每天都在浏览网页,发送大大 ...

  2. java redis队列_redis队列实现高并发怎么用?Java如何使用redis队列解决高并发?

    小伙伴们大家好,不知道你们有没有在Java开发中遇到redis队列高并发,这个问题让你很头疼,今天小编就来讲解一下在Java中遇到redis队列高并发了,到底该怎么办. 高并发的业务场景: 我们做商品 ...

  3. redis java应用_redis在JAVA的简单应用

    reids是一个高性能的key-value数据库.它存储的value支持各种类型的数据,如String,List,set,hash类型.在此基础上,各种不同方式的排序. 本文不具体争对redis数据库 ...

  4. redis存储java对象_Redis存储java对象

    我们很多时候希望直接把一个对象放到Redis中,然后在需要的时候取出来.Redis的key和value都支持二进制安全的字符串,存储 Java对象不是问题,下面我们看一下如何来实现. 1要存储的对象 ...

  5. redis stream java消息队列_Redis 异步消息队列与延时队列

    消息中间件,大家都会想到 Rabbitmq 和 Kafka 作为消息队列中间件,来给应用程序之间增加异步消息传递功能.这两个中间件都是专业的消息队列中间件,特性之多超出了大多数人的理解能力.但是这种属 ...

  6. python使用redis的消息队列_Redis实现简单消息队列

    任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容. 我们每天都在浏览网页,发送大大 ...

  7. java add offer_图解Java中的5大队列!(干货收藏)

    Java 中的队列有很多,例如:ArrayBlockingQueue.LinkedBlockingQueue.PriorityQueue.DelayQueue.SynchronousQueue等,那它 ...

  8. java的redis的作用_redis用途

    分布式锁(string) setnx key value,当key不存在时,将 key 的值设为 value ,返回1.若给定的 key 已经存在,则setnx不做任何动作,返回0. 当setnx返回 ...

  9. java JMS消息队列

    http://blog.csdn.net/shirdrn/article/details/6362792 http://haohaoxuexi.iteye.com/blog/1893038 http: ...

最新文章

  1. .NET Core 中的并发编程
  2. HDLBits 系列(11)All about Adder
  3. java short long_谈谈Java中整数类型(short int long)的存储方式
  4. Apache ZooKeeper - Leader Election使用场景
  5. 堆内存和数据结构堆之间的关系是什么?
  6. BZOJ-2780 Sevenk Love Oimaster(广义后缀自动机)
  7. 利用python爬虫(案例5)--X刺代理的小IP们
  8. php 复制mysql数据库_PHP连接MySQL数据库的三种方式
  9. tomcat使用spring-loaded实现应用热部署
  10. 盘点程序员必备的免费资源网站
  11. 推荐一款基于.Net Core开发简约漂亮的 WPF UI库
  12. 挨踢部落故事汇(9):女程序媛的开发梦
  13. iOS通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完
  14. 论文中出现的 cf. i.e. s.t. e.g. w.r.t. et al. etc等英文缩写是什么意思
  15. led指示灯电路图大全(八款led指示灯电路设计原理图详解)
  16. crash工具分析sysdump使用
  17. Rodrigues’ Rotation Formula罗德里格旋转公式详解(坐标轴旋转)
  18. 【RF】【元素定位】 Other element would receive the click
  19. SharpDevelop插件开发手册
  20. docker-anpine镜像介绍

热门文章

  1. 趣拍云短视频SDK全面升级,简单易用引开发者点赞
  2. 补单平台淘宝补单计划
  3. 阿里云短信服务(完整指南),短信发送功能实现。
  4. 为什么用恒流电源驱动LED灯具
  5. Java 构造函数特点
  6. c语言实现的的map
  7. vue-PhotoSwipe插件填坑
  8. Kali 工具系列【3】kali Firefox浏览器下安装一些常用的渗透测试插件
  9. CocoaChina12月源码精选
  10. 最火热的东南亚跨境电商平台Shopee、Lazada,为什么必须要做补单