Redis查看订阅的模式串详细内容

问题描述

pubsub channels可以查看Redis中被订阅的频道(channel):

在这里插入图片描述

pubsub numpat可以查看被订阅的模式(pattern)数量:

# redis-cli pubsub numpat
(integer) 3

问题:

除了查看被订阅模式的数量,我还需要获取每个订阅模式字符串的内容,怎么做 ?

解决方法

google没搜到现成的命令,决定自己修改redis-server源码,打印模式链表的内容,用时3~5分钟,需要了解:

  • Redis源码编译方法,参考官网或本人的博客

  • Redis服务器将所有模式的订阅信息保存在服务器状态的pubsub_patterns链表中。

具体操作

1、下载Redis源码(这里用的是6.0.9版本的源码,下载链接),修改pubsub.c,自定义一个模式链表打印函数myPubsubPatternsPrint,实现参考如下:

// pubsub.c
void myPubsubPatternsPrint()
{
    list *l = server.pubsub_patterns;
    listNode *cur = l->head;
    serverLog(LL_NOTICE, "[DEBUG] ALL PUBSUB PATTERNS: ");
    while (cur != NULL) {
        pubsubPattern *pp = (pubsubPattern *)(cur->value);
        robj *obj = pp->pattern;
        char *pattern = (char *)obj->ptr;
        serverLog(LL_NOTICE, "%s", pattern);
        cur = cur->next;
    }
}

2、重新编译并安装redis-server,后台gdb call一下自定义的打印函数myPubsubPatternsPrint得到模式链表的内容,如下图所示:
在这里插入图片描述

参考资料

【1】《Redis设计与实现》 第18章 发布与订阅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pcj_888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值