magent实现memcached集群的一个问题

Posted I am a slow walker,but I never

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了magent实现memcached集群的一个问题相关的知识,希望对你有一定的参考价值。

之前我们小组封装了一个memcached类库,里面有一个名为RemoveStartWith的方法可以根据起始字符串删除所有节点中负责键值规则的缓存项。它实现的原理就是通过stats命令获取每个节点的所有缓存键值然后逐一匹配。使用magent后这个方法就不起作用了,因为magent并不支持stats命令。查看了magent.c源代码:

} else if (ntokens >= 2 && (strcmp(tokens[COMMAND_TOKEN].value, "stats") == 0)) {
        /* END\r\n
         */
        char tmp[128];
        out_string(c, "memcached agent v" VERSION);
        for (i = 0; i < matrixcnt; i ++) {
            snprintf(tmp, 127, "matrix %d -> %s:%d, pool size %d", 
                    i+1, matrixs[i].ip, matrixs[i].port, matrixs[i].used);
            out_string(c, tmp);
        }
        out_string(c, "END");
        skip = 1;
    }

要让magent支持stats命令需要作出一定的修改,主要包括在conn结构中的flag结构新增一个stats相关命令、修改发送请求的do_transcation函数实现、修改处理请求的process_get_response函数实现。

以上是关于magent实现memcached集群的一个问题的主要内容,如果未能解决你的问题,请参考以下文章

部署Memcached+magent+keepalived高可用集群

Memcached + Magent + keepalived高可用集群

超简单的memcached集群搭建

mamcached+magent构建memcached集群

Magent+keepalived+Memcached缓存高可用群集

Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解