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 %}