redis java 队列_Redis 队列 Java调用简单实现
简述
在本博客中,我们将会创建一个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调用简单实现相关推荐
- redis 队列_Redis系列5实现简单消息队列
任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容. 我们每天都在浏览网页,发送大大 ...
- java redis队列_redis队列实现高并发怎么用?Java如何使用redis队列解决高并发?
小伙伴们大家好,不知道你们有没有在Java开发中遇到redis队列高并发,这个问题让你很头疼,今天小编就来讲解一下在Java中遇到redis队列高并发了,到底该怎么办. 高并发的业务场景: 我们做商品 ...
- redis java应用_redis在JAVA的简单应用
reids是一个高性能的key-value数据库.它存储的value支持各种类型的数据,如String,List,set,hash类型.在此基础上,各种不同方式的排序. 本文不具体争对redis数据库 ...
- redis存储java对象_Redis存储java对象
我们很多时候希望直接把一个对象放到Redis中,然后在需要的时候取出来.Redis的key和value都支持二进制安全的字符串,存储 Java对象不是问题,下面我们看一下如何来实现. 1要存储的对象 ...
- redis stream java消息队列_Redis 异步消息队列与延时队列
消息中间件,大家都会想到 Rabbitmq 和 Kafka 作为消息队列中间件,来给应用程序之间增加异步消息传递功能.这两个中间件都是专业的消息队列中间件,特性之多超出了大多数人的理解能力.但是这种属 ...
- python使用redis的消息队列_Redis实现简单消息队列
任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容. 我们每天都在浏览网页,发送大大 ...
- java add offer_图解Java中的5大队列!(干货收藏)
Java 中的队列有很多,例如:ArrayBlockingQueue.LinkedBlockingQueue.PriorityQueue.DelayQueue.SynchronousQueue等,那它 ...
- java的redis的作用_redis用途
分布式锁(string) setnx key value,当key不存在时,将 key 的值设为 value ,返回1.若给定的 key 已经存在,则setnx不做任何动作,返回0. 当setnx返回 ...
- java JMS消息队列
http://blog.csdn.net/shirdrn/article/details/6362792 http://haohaoxuexi.iteye.com/blog/1893038 http: ...
最新文章
- .NET Core 中的并发编程
- HDLBits 系列(11)All about Adder
- java short long_谈谈Java中整数类型(short int long)的存储方式
- Apache ZooKeeper - Leader Election使用场景
- 堆内存和数据结构堆之间的关系是什么?
- BZOJ-2780 Sevenk Love Oimaster(广义后缀自动机)
- 利用python爬虫(案例5)--X刺代理的小IP们
- php 复制mysql数据库_PHP连接MySQL数据库的三种方式
- tomcat使用spring-loaded实现应用热部署
- 盘点程序员必备的免费资源网站
- 推荐一款基于.Net Core开发简约漂亮的 WPF UI库
- 挨踢部落故事汇(9):女程序媛的开发梦
- iOS通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完
- 论文中出现的 cf. i.e. s.t. e.g. w.r.t. et al. etc等英文缩写是什么意思
- led指示灯电路图大全(八款led指示灯电路设计原理图详解)
- crash工具分析sysdump使用
- Rodrigues’ Rotation Formula罗德里格旋转公式详解(坐标轴旋转)
- 【RF】【元素定位】 Other element would receive the click
- SharpDevelop插件开发手册
- docker-anpine镜像介绍