私は自分が同じことを必要としていることに気づきました。そこで、次のパッケージを作成しました。
ドキュメンテーション| ソース
go get github.com/scotch/aego/ds
と同じ API を使用する"appengine/datastore"
ため、ドロップイン代替として機能します。
import "github.com/scotch/aego/v1/ds"
u = &User{Name: "Bob"}
key := datastore.NewKey(c, "User", "bob", 0, nil)
key, err := ds.Put(c, key, u)
u = new(User)
err = ds.Get(c, key, u)
デフォルトでは、すべてPut
の とが memcache にキャッシュされますが、次のメソッドGet
を呼び出すことでこの動作を変更できます。ds.Register
ds.Register("User", true, false, false)
このメソッドは、および 3 - , ,をRegister
表す文字列を取ります。値を渡すと、レコードがそのストアに永続化されます。ストアは、変更する予定のないレコードに役立ちますが、複数のインスタンスを実行している場合は古いデータが含まれる可能性があります。Kind
bool
userDatastore
useMemcache
useMemory
true
AEgo/ds
Memory
サポートされている方法は次のとおりです。
Put
PutMulti
Get
GetMulti
Delete
DeleteMulti
AllocateIDs
注: 現在、キャッシュは でのみ発生しGet
ます。GetMulti
データストアからプルします。
AEGo/ds
進行中の作業ですが、コードは十分にテストされています。フィードバックをいただければ幸いです。
そして、あなたの質問に答えるために、エンティティをシリアル化して memcache の永続性を取得する方法を次に示します。