Redigoを使う(1) 基本的な使い方


はじめに

Redigoは、RedisのGo言語向けクライアントライブラリです。
Redigoの一通りの使い方を見ていきます。

環境

サーバの起動

マイクロソフトが提供しているRedisのWindows向けmsiパッケージをダウンロードして実行します。
デフォルト設定では、ローカルの6379番ポートでサービス開始します。別PCからアクセスできるようにするには設定ファイルでprotected modeを「no」に変更します。

redis-cliでの動作確認

インストールディレクトリ(WindowsではC:\Program Files\Redis)にあるredis-cli.exeを実行すると、ローカルホストの6379番ポートに接続します。
以降、キーボードからコマンドを入力できます。

127.0.0.1:6379> SET temperature 20
OK
127.0.0.1:6379> GET temperature
"20"

temperatureというキーに20という値を書き込み、直後に読み出しています(なおRedisでは数値と文字列は区別されません)。
本記事ではRedisの各コマンドについては説明しません。必要に応じて、コマンドリファレンスを適宜参照して下さい。

基本的なコード

上記の単純なSET/GETを、Redigoを使って行います。
始めにパッケージを取得します。

C:\Dev> go get github.com/gomodule/redigo/redis

単純なコードは次のようになります。

main.go
package main

import (
    "fmt"

    "github.com/gomodule/redigo/redis"
)

func main() {
    // 接続
    conn, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    // 値の書き込み
    r, err := conn.Do("SET", "temperature", "25")
    if err != nil {
        panic(err)
    }
    fmt.Println(r) // OK

    // 値の読み出し
    s, err := redis.String(conn.Do("GET", "temperature"))
    if err != nil {
        panic(err)
    }
    fmt.Println(s) // 25
}

始めに、conn.DialでRedisサーバとの間で接続を確立します。
次にconn.DoでSETを実行します。第1引数にコマンド名、第2引数以降にパラメータを記述します。
最後にconn.DoでGETを行います。ここでは戻り値をさらにredis.Stringへ渡しています。conn.Doの結果はinterface{}型です。ここからstringを得るには[]byte型にキャストしさらにstringに変換する必要があります。煩雑なコードになるため、一発でstringを得る関数がイディオム的に用意されています。

実行結果は次の通りです。

C:\Dev> go run main.go
OK
25

おわりに

Redisのセットアップと、Redigoでの基本的なSET/GETの行い方を見ました。
以降ではより高度な使い方を見ていきます。

参考