はじめに
Memcacheについて、簡潔にまとめてみました。
ひとまず代表的な処理のみ挙げてます。
公式ドキュメント
Memcacheの概要
Memcacheの使い方
Memcacheにおけるエラーハンドリングの重要性
memcache -GoDoc
チートシート
以下は省略してます。
- コンテキストの生成
ctx := appengine.NewContext(req)
- import文
なお、エラー時の変数については公式ドキュメント variablesを要参照
Add
// 追加したいItemを生成
item := &memcache.Item {
Key: "飯島",
Value: "院生",
Expiration: time.Duration(1440) * time.Second //期限を1440秒に指定
}
err := memcache.Add(ctx, item)
// keyに該当するitemが既に存在している場合
if err == memcache.ErrNotStored {
log.Infof(ctx, "item with key %q already exists", item.Key)
return
}
// それ以外のエラーが起きた場合
if err != nil {
log.Errorf(ctx, "error adding item: %v", err)
}
Set
// セットしたいItemを生成
item := &memcache.Item {
Key: "飯島",
Value: "院生",
Expiration: time.Duration(1440) * time.Second //期限を1440秒に指定
}
err := memcache.Set(ctx, item)
if err != nil {
log.Errorf(ctx, "error setting item: %v", err)
}
Get
// 取得したいItemのkey
key := "周平"
item, err := memcache.Get(ctx, key)
// keyに該当するItemが存在しない場合
if err == memcache.ErrCacheMiss {
log.Infof(ctx, "item not in the cache")
return
}
// それ以外のエラーが起きた場合
if err != nil {
log.Errorf(ctx, "error getting item: %v", err)
return
}
// 取得したItemの値をstringに変換
v := bytesToString(item.Value)
byte配列からstringへの変換
ItemのValueをstringに変換する際に、筆者はこれを使いました
func bytesToString(data []byte) string {
return string(data[:])
}
Delete
// 削除したいItemのkey
key := "飯島"
err := memcache.Delete(ctx, key)
// keyに該当するItemが存在しない場合
if err == memcache.ErrCacheMiss {
log.Infof(ctx, "item not in the cache")
return
}
// それ以外のエラーが起きた場合
if err != nil {
log.Errorf(ctx, "error getting item: %v", err)
return
}