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

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

redis-cli MONITOR | grep queuename

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

【问题讨论】:

    标签: redis message-queue redis-cluster


    【解决方案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 部分。
    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多