11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-09-01

はじめに

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の行い方を見ました。
以降ではより高度な使い方を見ていきます。

参考

11
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?