如何使用Redis-cli查看Redis服务器中运行的队列列表?
Redis CLI 查看队列相关信息的替代命令方案
你当前使用的redis-cli MONITOR | grep queuename命令可以实时捕获队列相关操作,但MONITOR会输出实例所有执行的命令,性能开销极高,不建议在生产环境长期运行。针对不同的队列查询需求,有更合适的专用CLI命令:
场景1:查询实例中所有现存的队列(Redis队列默认使用List类型存储)
- 生产环境优先使用SCAN命令分批扫描,不会阻塞实例:
# 扫描所有List类型的键,过滤出符合队列命名规则的结果 redis-cli --scan --type list | grep queuename - 测试环境(实例数据量极小)可以使用KEYS命令快速查询:
redis-cli KEYS "*queuename*"注意:KEYS命令会一次性扫描全库所有键,数据量较大的实例会触发秒级甚至分钟级阻塞,绝对禁止在生产环境使用。
场景2:查询指定队列的长度(排查队列堆积)
直接使用LLEN命令即可返回队列当前的元素总数:
redis-cli LLEN queuename
场景3:查看队列内现存的元素内容
使用LRANGE命令可以按范围读取队列元素,不需要实时捕获新写入操作时优先用该命令:
# 示例:查看队列中前100个元素,结束下标填-1时会返回队列全部元素 redis-cli LRANGE queuename 0 99
场景4:低开销实时监控队列的写入/消费操作
如果需要持续监听队列的操作事件,可以用Redis键空间通知功能,性能开销远低于MONITOR:
- 先临时开启List类型的键事件通知(重启后失效,永久生效需要修改配置文件中
notify-keyspace-events参数为El):redis-cli CONFIG SET notify-keyspace-events El - 订阅监听队列的push、pop操作:
如果需要监听所有库的队列操作,把命令中# 监听0号库所有List的push、pop事件,过滤指定队列的话末尾加 `| grep queuename` 即可 redis-cli PSUBSCRIBE __keyevent@0__:lpush __keyevent@0__:rpush __keyevent@0__:lpop __keyevent@0__:rpop@0替换为@*即可。
内容的提问来源于stack exchange,提问作者Ojer_Dev
相关产品推荐
相关产品推荐

