背景:项目业务上需要实现延时发送消息的需求。最开始想到的就是消息中间件,公司统一用的RocketMq,于是开始整。。。但是,业务需求要求的延时消息时间是可自由指定的,但是公司居然用的是开源的RocketMq,开源的只支持18个固定级别的延时,我们这里不重点说RocketMq,有兴趣的自己查吧。结论就是开源的RocketMq没法实现现在的需求,要不就用阿里云的,公司也不愿出那份钱吧。哈哈哈。于是想别
转载
2023-07-07 13:38:23
97阅读
# 如何在 Redis 队列中实现主动执行
## 流程
| 步骤 | 描述 |
| ---- | ---- |
| 1 | 创建一个 Redis 队列 |
| 2 | 生产者向队列中插入任务 |
| 3 | 消费者从队列中取出任务,并执行 |
## 具体步骤
### 步骤1:创建一个 Redis 队列
首先,我们需要连接到 Redis 服务器并创建一个队列。
```markdown
原创
2024-06-16 04:53:06
7阅读
# 使用 Redis 做执行队列
在实际开发中,经常会遇到需要异步执行一些任务的情况,比如发送邮件、处理大量数据等。为了提高效率和系统的可靠性,我们可以使用 Redis 来构建一个执行队列,将任务按顺序放入队列中,然后由消费者进行处理。
## 什么是 Redis?
Redis 是一个开源的内存数据库,被广泛用于缓存、消息队列等场景。它支持多种数据结构,如字符串、列表、哈希表等,提供了丰富的操
原创
2024-05-03 03:57:50
28阅读
### 等待队列和执行队列
在Java中,等待队列和执行队列是非常常见的概念。它们在多线程编程中起着重要的作用,用于协调线程的执行顺序和相互之间的通信。
#### 等待队列
等待队列是指一个存储等待线程的数据结构,用于在特定条件满足之前暂停线程的执行。当一个线程调用某个对象的`wait()`方法时,它会被放入等待队列中,直到其他线程调用相同对象的`notify()`或`notifyAll()
原创
2023-11-20 15:57:25
88阅读
# Java队列执行的实现
作为一名经验丰富的开发者,我将指导你如何实现Java队列执行。在本篇文章中,我将按照以下步骤进行说明,并提供每一步所需的代码示例。
## 流程概述
首先,让我们来了解整个流程的概述。Java队列执行的基本思想是将需要执行的任务按照顺序放入队列中,然后一个接一个地执行这些任务。具体的实现步骤如下:
1. 创建一个任务队列。
2. 将需要执行的任务按照顺序放入任务队
原创
2023-08-31 07:25:00
128阅读
Redis 数据类型 StreamRedis 常用命令,思维导图 >>>Redis Stream 是 Redis 5.0 版本新增加的数据结构。Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等
转载
2023-07-09 19:07:57
0阅读
举凡 device driver,semaphore 等方面都会使用到 wait_queue 来 implement。所以,它算是 kernel 里蛮 基本的一个数据结构。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue
由于公司提供的队列实在太过于蛋疼而且还限制不能使用其他队列,但为了保证数据安全性需要一个可以有ack功能的队列。原生的redis中通过L/R PUSH/POP方式来实现队列的功能,这个当然是没办法满足需求的(没有ack功能),所以需要自己对redis的list(队列)做个小小的调整。大体思路为在POP时将pop出的数据放到备份的地方,当有ACK请求(确认消息被消耗)后将备份的信息删除掉;每次在po
转载
2023-05-26 15:01:11
232阅读
(1)JavaScript的执行机制 1、所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。 2、主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。 3、一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",如果有有执行任务,则进入执行栈,开始执行。 4、主线程不断重复上
转载
2023-09-28 07:39:29
126阅读
细心的你可能发现了,本系列课程中竟然出现了三个课时都是在说消息队列,第 10 课时讲了程序级别的消息队列以及延迟消息队列的实现,而第 15 课时讲了常见的消息队列中间件 RabbitMQ、Kafka 等,由此可见消息队列在整个 Java 技术体系中的重要程度。本课时我们将重点来看一下 Redis 是如何实现消息队列的。我们本课时的面试题是,在 Redis 中实现消息队列的方式有几种?典型回答早在
转载
2023-07-17 16:19:35
121阅读
一 消息队列1. 定义消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。2. 消息队列的适用场景消息队列的适用场景包括异步处理,应用解耦,流量削锋和消息通讯
转载
2024-08-09 23:09:05
112阅读
java redis使用之利用jedis实现redis消息队列
应用场景对于数据库查询的IO连接数高、连接频繁的情况,可以考虑使用缓存实现。从网上了解到redis可以对所有的内容进行二进制的存储,而java是可以对所有对象进行序列化的,序列化的方法会在下面的代码中提供实现。序列化这里我编写了一个java序列化的工具,主要是对对象转换成byte[],和根据
转载
2023-06-06 22:56:29
202阅读
最近在一个老项目中需要用消息队列,本来想着用卡夫卡,但是试了几个版本之后发现jdk和卡夫卡版本一直对不上,最后选择用redis来实现消息队列的发布/订阅模式。感谢这位大佬的博客给了我很多的帮助,再次感谢这位大佬。下面我们就看看我是怎么来实现的。直接上代码 redis.propertiesredis.url=localhost
redis.port=6379
redis.maxIdle=30
red
转载
2023-07-04 18:12:42
149阅读
上回说到使用 Redis 的 List 实现消息队列有很多局限性,比如:没有良好的 ACK 机制;没有 ConsumerGroup 消费组概念;消息堆积。List 是线性结构,想要查询指定数据需要遍历整个列表;Stream 是 Redis 5.0 引入的一种专门为消息队列设计的数据类型,Stream 是一个包含 0 个或者多个元素的有序队列,这些元素根据 ID 的大小进行有序排列。它实现了大部分消
转载
2024-02-28 13:34:00
52阅读
仪表盘【不适用于 Windows】仪表盘就是 Horizon 咯安装composer require laravel/horizon配置发布相关文件(包含配置等)php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"参考:Horizon - 配置 |《Laravel 5.5 中文文档》 | PHP
转载
2024-06-01 15:41:30
46阅读
packagecom.yys.demo.config;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.stereotype.Component;importorg
转载
2023-06-26 14:57:06
174阅读
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足
linux等待队列分析
一、等待队列在linux内核中提供了阻塞机制,等待队列(wait queque)。在驱动中使用的也比较多。例如,应用程序去读取设备上的数据时,如果设备还没有准备好数据,可以将这个进程挂起,进入阻塞状态。等到设备准备好数据时才将这个进程唤醒,并且将数据返回给应用程序,继续执行。阻塞进程的实现方法就使用到了等待队列。二、等待队列的数据
转载
2023-08-04 16:44:56
90阅读
# Java 队列依次执行
> 本文将介绍Java中队列的概念、基本操作和队列的依次执行。通过代码示例演示了如何使用Java队列进行任务的有序执行。
## 队列的概念
队列是一种常见的数据结构,它按照先进先出(FIFO)的原则进行操作。在队列中,元素被添加到末尾,而从队列中删除元素时,总是从队列的前端删除。
在Java中,可以使用`java.util.Queue`接口来实现队列的功能。`Q
原创
2023-10-25 06:25:14
60阅读
# Java队列顺序执行:从概念到实践
在多线程编程中,队列是一种常见的数据结构,用于在程序中实现任务的顺序执行。Java提供了多种队列实现,包括`ArrayBlockingQueue`、`LinkedBlockingQueue`等。本文将介绍Java队列的基本概念,并通过代码示例展示如何在Java中实现队列顺序执行。
## 队列的基本概念
队列是一种先进先出(FIFO)的数据结构,其操作包
原创
2024-07-28 06:01:26
23阅读