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集群的一个问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用wireshark分析tcp/ip报
- 下一篇: 不常见但很有用的chrome调试工具使用