Goでmemcachedのstatsを取得する
April 21, 2014 - golang
YouTubeで使われているvitessの実装をざっと見てたところ、memcachedクライアント実装が簡潔でわかりやすかったので出来る限りラフに実装を写経してみました。
やってることはコマンドラインからアドレスを受け取って、memcachedのstatsを表示するだけです。
この写経で学べること
- flagパッケージを使ったコマンドライン引数の取得
- netパッケージを使ったネットワーク接続
- bufioパッケージを使ったストリームの読み出し
main()
func main() {
// 引数読み出し
address := flag.String("address", "localhost:11211", "server address")
flag.Parse()
fmt.Printf("server: %s\n", *address)
// サーバーに接続
conn, err := GetConn(*address)
if err != nil {
fmt.Printf("%#v", err)
os.Exit(1)
}
defer conn.conn.Close()
// stats読み出し
result, _ := conn.Stats()
fmt.Printf("%s", result)
}
実行結果
$ go run ./memcache_stats.go --address=localhost:11211
server: localhost:11211
STAT pid 23282
STAT uptime 12425
STAT time 1398007875
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 0.335948
STAT rusage_system 0.344947
:
実装全体
{% gist 11116595 memcache_stats.go %}