私は自分が同じことを必要としていることに気づきました。そこで、次のパッケージを作成しました。
ドキュメンテーション| ソース
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表す文字列を取ります。値を渡すと、レコードがそのストアに永続化されます。ストアは、変更する予定のないレコードに役立ちますが、複数のインスタンスを実行している場合は古いデータが含まれる可能性があります。KindbooluserDatastoreuseMemcacheuseMemorytrueAEgo/dsMemory
サポートされている方法は次のとおりです。
Put
PutMulti
Get
GetMulti
Delete
DeleteMulti
AllocateIDs
注: 現在、キャッシュは でのみ発生しGetます。GetMultiデータストアからプルします。
AEGo/ds進行中の作業ですが、コードは十分にテストされています。フィードバックをいただければ幸いです。
そして、あなたの質問に答えるために、エンティティをシリアル化して memcache の永続性を取得する方法を次に示します。