From 878ca428c126af480526738fdd6821a06f6242d6 Mon Sep 17 00:00:00 2001 From: XiangdongHe <81752066+XiangdongHe@users.noreply.github.com> Date: Mon, 24 Feb 2025 17:23:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E8=A1=A8=E8=BF=B0=E4=B8=8D=E6=B8=85=E6=99=B0=E7=9A=84=E6=96=87?= =?UTF-8?q?=E5=AD=97=E4=BB=8B=E7=BB=8D=EF=BC=8CUpdate=20redis-delayed-task?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 既然是要找到定时过期的任务,肯定需要有定期扫描的,既然消费者没有轮询,那应该就是RDelayedQueue使用zrangebyscore命令定期扫描已经过期的任务。 --- docs/database/redis/redis-delayed-task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/database/redis/redis-delayed-task.md b/docs/database/redis/redis-delayed-task.md index 52f9c84c..35f93043 100644 --- a/docs/database/redis/redis-delayed-task.md +++ b/docs/database/redis/redis-delayed-task.md @@ -72,7 +72,7 @@ Redisson 是一个开源的 Java 语言 Redis 客户端,提供了很多开箱 Redisson 的延迟队列 RDelayedQueue 是基于 Redis 的 SortedSet 来实现的。SortedSet 是一个有序集合,其中的每个元素都可以设置一个分数,代表该元素的权重。Redisson 利用这一特性,将需要延迟执行的任务插入到 SortedSet 中,并给它们设置相应的过期时间作为分数。 -Redisson 使用 `zrangebyscore` 命令扫描 SortedSet 中过期的元素,然后将这些过期元素从 SortedSet 中移除,并将它们加入到就绪消息列表中。就绪消息列表是一个阻塞队列,有消息进入就会被监听到。这样做可以避免对整个 SortedSet 进行轮询,提高了执行效率。 +Redisson 定期使用 `zrangebyscore` 命令扫描 SortedSet 中过期的元素,然后将这些过期元素从 SortedSet 中移除,并将它们加入到就绪消息列表中。就绪消息列表是一个阻塞队列,有消息进入就会被消费者监听到。这样做可以避免消费者对整个 SortedSet 进行轮询,提高了执行效率。 相比于 Redis 过期事件监听实现延时任务功能,这种方式具备下面这些优势: