首页 > 代码库 > magent实现memcached集群的一个问题

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集群的一个问题