Redis-cli - 正在运行的队列命令列表?

Posted

技术标签:

【中文标题】Redis-cli - 正在运行的队列命令列表?【英文标题】:Redis-cli - list of running queues command? 【发布时间】:2022-01-01 16:18:15 【问题描述】:

我想使用 Redis-cli 查看 Redis 服务器中的队列列表。我正在使用这个命令来监控队列。

redis-cli MONITOR | grep queuename

如果我们有任何符合我要求的 cli 命令,请告诉我。

【问题讨论】:

【参考方案1】:

我似乎没有足够的声誉在评论中阐明您是如何实现队列的,因此我将在下面提供一些想法,假设您使用RPUSH 和 @987654322 将队列实现为 FIFO 队列@ 在队列中添加和删除项目。

> RPUSH queue-1 "task-a"
(integer) 1
>LPOP queue-1
"task-a"

如果您对代表队列的列表使用标准命名约定,则可以从KEYS 命令中按名称获取它们,例如KEYS queue-*。关于这种方法的几点说明。首先,如果您的生产实例中有大量密钥,这会带来一些性能问题,当您的团队的其他成员意识到您的 redis 实例可能会受到一些性能影响时,最好的用途是进行临时故障排除。其次,这只会显示列表包含元素的键。如果您排空了一个队列,它将不会出现在返回值中。

另一种方法是使用排序集来保存用作队列的列表的键,并修改与队列关联的分数以让您了解队列大小。在队列中添加或删除消息时,您还可以使用ZADD 将分数增加添加或返回的元素数。这将允许您通过随时使用ZREVRANGE 减小队列大小来快速获取用作队列的列表集。

> RPUSH queue-1 "task-a"
(integer) 1
> ZADD queues INCR 1 queue-1
"1"
> RPUSH queue-1 "task-b"
(integer) 2
> ZADD queues INCR 1 queue-1
"2"
> RPUSH queue-2 "message-a"
(integer) 1
> ZADD queues INCR 1 queue-2
"1"
> RPUSH queue-2 "message-b"
(integer) 2
> ZADD queues INCR 1 queue-2
"2"
> LPOP queue-2
"message-a"
> ZADD queues INCR -1 queue-2
"1"
> ZREVRANGE queues 0 -1 WITHSCORES
1) "queue-1"
2) "2"
3) "queue-2"
4) "1"

【讨论】:

一般来说,如果您没有足够的声誉来发表评论,则不应发布您的 cmets 作为答案。但是,在这种特定情况下,您似乎提供了一个非常有效的答案,这不适合 cmets 部分。

以上是关于Redis-cli - 正在运行的队列命令列表?的主要内容,如果未能解决你的问题,请参考以下文章

PHP+Redis 定长队列(redis.call)

怎样看redis 任务队列的任务执行数目

Redis-cli 命令不能用

无法从 yugabyte 数据库启动 redis-cli

Redis停止的命令

Redis 多消费队列方案