Queue-基于redis的队列
创始人
2025-05-31 07:58:31
0

接上文:RBucket对象桶 -> Redisson系列-1(让redis操作更优雅)_子书少卿的博客-CSDN博客

(Queue) 结构的 RQueue Java对象实现了 java.util.queue 接口。尽管 Roueue 对象无初始大小 (边界)限制,但对象的最大容量受Redis限制,最大元素数量是 4,294,967,295 个;

顾名思义,其实就是咱们在“数据结构与算法”一书中提到的拥有“FIFO特性~先进先出”的队列 ~ 异步解耦

双端队列 (Deque)
基于Redis的Redisson分布式无界双端队列 (Deque) 结构的 RDeque Java对象实现了java.uti1.Deque 接口。尽管 RDeque 对象无初始大小 (边界) 限制,但对象的最大容量受Redis限制,最大元素数量是 4 294 967 295 ;

阻塞队列 (Blocking Queue)--并发安全
基于Redis的Redisson分布式无界阻塞队列 (Blocking Queue) 结构的 RBockingQueue Java对象实现了 java,util.concurrent,BlockingQueue 接口。尽管 RBlockingQueue 对象无初始大小 (边界) 限制但对象的最大容量受Redis限制,最大元素数量是 4 294 967 295 个;

有界阻塞队列 (Bounded Blocking Queue)
基于Redis的Redisson分布式有界阻塞队列 (Bounded Blocking Queue) 结构的RBoundedBlockingQueue Java对象实现了 java.util.concurrent.BlockingQueue 接口。该对象的最大容量受Redis限制,最大元素数量是 4 294 967 295 个。队列的初始容量 (边界)必须在使用前设定好

阻塞双端队列 (Blocking Deque)
基于Redis的Redisson分布式无界阻塞双端队列 (Blocking Deque) 结构的 RBlockingDeque Java对象实现了 java.util.concurrent.BlockingDeque 接口。尽管 RBlockingDeque 对象无初始大小(边界) 限制,但对象的最大容量受Redis限制,最大元素数量是 4 294 967 295 个

阻塞公平队列 (Blocking Fair Queue)
基于Redis的Redisson分布式无界阻塞公平队列 (Blocking Fair Queue) 结构的 BlockingFairQueueJava对象在实现Redisson分布式无界阻塞队列 (Blocking Queue) 结构 RBockingoueue 接口的基础上,解决了多个队列消息的处理者在复杂的网络环境下,网络延时的影响使”较远”的客户端最终收到消息数量低于“较近”的客户端的问题。从而解决了这种现象引发的个别处理节点过载的情况。
以分布式无界阻塞队列为基础,采用公平获取消息的机制,不仅保证了 po11、 polFromAnypollLastAndofferFirstTo 和 take 方法获取消息的先入顺序,还能让队列里的消息被均匀的发布到处在复杂分布式环境中的各个处理节点里;

阻塞公平双端队列 (Blocking Fair Deque)
基于Redis的Redisson分布式无界阻塞公平双端队列 (Blocking Fair Deque)结构的aRBlockingFairDeque Java对象在实现Redisson分布式无界阳塞双端队列 (Blocking Deque) 结构RBlockingPegue 接口的基础上,解决了多个队列消息的处理者在复杂的网络环境下,网络延时的影响使”较远”的客户端最终收到消息数量低于”较近”的客户端的问题。从而解决了这种现象引发的个别处理节点过载的情况
以分布式无界阻塞双端队列为基础,采用公平获取消息的机制,不仅保证了 po11 、 takepollFirst 、 takeFirst 、 pollLast 和 takeLast 方法获取消息的先入顺序,还能让队列里的消息被均匀的发布到处在复杂分布式环境中的各个处理节点里。

测试:

@Slf4j
@Service
public class QueueService {private static final String QUEUE_KEY = "queue:key";private static final String BLOCKING_QUEUE_KEY = "blocking:queue:key";@Resourceprivate RedissonClient redisson;/**** @param str* @return*/public void queueAdd(String str){// 无界普通队列
//        RQueue queue = redisson.getQueue(QUEUE_KEY);
//        queue.offer(str);// 阻塞队列RBlockingDeque blockingDeque = redisson.getBlockingDeque(BLOCKING_QUEUE_KEY);blockingDeque.offer(str);}/**** @return*/public void queueConsume(){
//        RQueue queue = redisson.getQueue(QUEUE_KEY);
//        System.out.println( queue.poll());RBlockingDeque blockingDeque = redisson.getBlockingDeque(BLOCKING_QUEUE_KEY);System.out.println(blockingDeque.poll());}} 

todo:

队列和topic的区别?

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...