Memcache paket menyediakan klien untuk penyimpanan nilai kunci dalam memori terdistribusi App Engine untuk potongan kecil data arbitrer.
Operasi dasar mendapatkan dan menetapkan item, yang dikunci oleh string.
item0, err := memcache.Get(c, "key") if err != nil && err != memcache.ErrCacheMiss { return err } if err == nil { fmt.Fprintf(w, "memcache hit: Key=%q Val=[% x]\n", item0.Key, item0.Value) } else { fmt.Fprintf(w, "memcache miss\n") }
dan
item1 := &memcache.Item{ Key: "foo", Value: []byte("bar"), } if err := memcache.Set(c, item1); err != nil { return err }
Variabel
ErrCacheMiss, ErrCASConflict, ErrNoStats, ErrNotStored, ErrServerError
var (
// ErrCacheMiss means that an operation failed
// because the item wasn't present.
ErrCacheMiss = errors.New("memcache: cache miss")
// ErrCASConflict means that a CompareAndSwap call failed due to the
// cached value being modified between the Get and the CompareAndSwap.
// If the cached value was simply evicted rather than replaced,
// ErrNotStored will be returned instead.
ErrCASConflict = errors.New("memcache: compare-and-swap conflict")
// ErrNoStats means that no statistics were available.
ErrNoStats = errors.New("memcache: no statistics available")
// ErrNotStored means that a conditional write operation (i.e. Add or
// CompareAndSwap) failed because the condition was not satisfied.
ErrNotStored = errors.New("memcache: item not stored")
// ErrServerError means that a server error occurred.
ErrServerError = errors.New("memcache: server error")
)
Gob, JSON
var (
// Gob is a Codec that uses the gob package.
Gob = Codec{gobMarshal, gobUnmarshal}
// JSON is a Codec that uses the json package.
JSON = Codec{json.Marshal, json.Unmarshal}
)
Functions
func Add
Add akan menulis item yang ditentukan, jika tidak ada nilai untuk kuncinya. ErrNotStored ditampilkan jika kondisi tersebut tidak terpenuhi.
func AddMulti
AddMulti adalah versi batch Add. appengine.MultiError mungkin ditampilkan.
func CompareAndSwap
CompareAndSwap menulis item tertentu yang sebelumnya ditampilkan oleh Get, jika nilainya tidak diubah atau dikeluarkan antara panggilan Get dan CompareAndSwap. Kunci item tidak boleh berubah di antara panggilan, tetapi semua kolom item lainnya mungkin berbeda. ErrCASConflict ditampilkan jika nilai diubah di antara panggilan. ErrNotStored ditampilkan jika nilai dikeluarkan di antara panggilan.
func CompareAndSwapMulti
CompareAndSwapMulti adalah versi batch CompareAndSwap. appengine.MultiError mungkin ditampilkan.
func Delete
Delete akan menghapus item untuk kunci tertentu. ErrCacheMiss ditampilkan jika item yang ditentukan tidak dapat ditemukan. Panjang kunci tidak boleh lebih dari 250 byte.
func DeleteMulti
DeleteMulti adalah versi batch dari Delete. Jika kunci apa pun tidak dapat ditemukan, appengine.MultiError akan ditampilkan. Panjang setiap kunci maksimal 250 byte.
func Flush
Flush akan membersihkan semua item dari memcache.
func GetMulti
GetMulti adalah versi batch dari Get. Peta yang ditampilkan dari kunci ke item mungkin memiliki lebih sedikit elemen daripada slice input, karena cache memcache tidak ditemukan. Panjang setiap kunci maksimal 250 byte.
func Increment
func Increment(c context.Context, key string, delta int64, initialValue uint64) (newValue uint64, err error)
Increment secara atomik akan menambahkan nilai desimal dalam kunci yang diberikan berdasarkan delta dan menampilkan nilai baru. Nilai ini harus muat dalam uint64. Overflow akan berakhir, dan underflow dibatasi hingga nol. Delta yang diberikan mungkin negatif. Jika kunci tidak ada dalam memcache, nilai awal yang diberikan akan digunakan untuk mengisinya secara atomik sebelum delta diterapkan. Panjang kunci tidak boleh lebih dari 250 byte.
func IncrementExisting
IncrementExisting bekerja seperti Increment, tetapi mengasumsikan bahwa kunci tersebut sudah ada di memcache dan tidak mengambil nilai awal. IncrementExisting dapat menghemat pekerjaan jika menghitung nilai awal mahal. Error akan ditampilkan jika item yang ditentukan tidak dapat ditemukan.
func PeekMulti
PeekMulti adalah versi batch dari Peek. Ini mirip dengan GetMulti, tetapi juga mengisi Item.Timestamps.
func Set
Set menulis item yang diberikan, tanpa syarat.
func SetMulti
SetMulti adalah versi batch Set. appengine.MultiError mungkin ditampilkan.
Codec
type Codec struct {
Marshal func(interface{}) ([]byte, error)
Unmarshal func([]byte, interface{}) error
}
Codec mewakili sepasang fungsi simetris yang mengimplementasikan codec. Item yang disimpan ke atau diambil dari memcache menggunakan Codec memiliki nilai yang disusun atau tidak disusun.
Semua metode yang disediakan untuk Codec berperilaku serupa dengan fungsi tingkat paket dengan nama yang sama.
func (Codec) Add
Add akan menulis item yang ditentukan, jika tidak ada nilai untuk kuncinya. ErrNotStored ditampilkan jika kondisi tersebut tidak terpenuhi.
func (Codec) AddMulti
AddMulti adalah versi batch Add. appengine.MultiError mungkin ditampilkan.
func (Codec) CompareAndSwap
CompareAndSwap menulis item tertentu yang sebelumnya ditampilkan oleh Get, jika nilainya tidak diubah atau dikeluarkan antara panggilan Get dan CompareAndSwap. Kunci item tidak boleh berubah di antara panggilan, tetapi semua kolom item lainnya mungkin berbeda. ErrCASConflict ditampilkan jika nilai diubah di antara panggilan. ErrNotStored ditampilkan jika nilai dikeluarkan di antara panggilan.
func (Codec) CompareAndSwapMulti
CompareAndSwapMulti adalah versi batch CompareAndSwap. appengine.MultiError mungkin ditampilkan.
func (Codec) Get
Mendapatkan item untuk kunci yang ditentukan dan mendekode nilai yang diperoleh ke v. ErrCacheMiss ditampilkan untuk cache memcache yang tidak ditemukan. Panjang kunci harus maksimal 250 byte.
func (Codec) Set
Set menulis item yang diberikan, tanpa syarat.
func (Codec) SetMulti
SetMulti adalah versi batch Set. appengine.MultiError mungkin ditampilkan.
Item
type Item struct {
// Key is the Item's key (250 bytes maximum).
Key string
// Value is the Item's value.
Value []byte
// Object is the Item's value for use with a Codec.
Object interface{}
// Flags are server-opaque flags whose semantics are entirely up to the
// App Engine app.
Flags uint32
// Expiration is the maximum duration that the item will stay
// in the cache.
// The zero value means the Item has no expiration time.
// Subsecond precision is ignored.
// This is not set when getting items.
Expiration time.Duration
// ItemTimestamps are server values only returned when calling Peek and PeekMulti.
// The timestamps are nil when calling Get and GetMulti.
Timestamps ItemTimestamps
// contains filtered or unexported fields
}
Item adalah unit memcache yang didapatkan dan ditetapkan.
func Get
Get mendapatkan item untuk kunci yang ditentukan. ErrCacheMiss ditampilkan untuk memcache cache yang tidak ditemukan. Panjang kunci tidak boleh lebih dari 250 byte.
func Peek
Peek mendapatkan item untuk kunci tertentu dan mengisi Item.Timestamps sebagai tambahan. ErrCacheMiss ditampilkan untuk cache memcache yang tidak ditemukan. Panjang kunci harus maksimal 250 byte.
ItemTimestamps
type ItemTimestamps struct {
// Expiration is related to Item.Expiration but it is a Time (not a Duration),
// provided by the server. It is not meant to be set by the user.
Expiration *time.Time
// LastAccess is the last time the Item was accessed.
LastAccess *time.Time
}
ItemTimestamps adalah stempel waktu yang secara opsional disediakan oleh server. Lihat Peek dan PeekMulti.
Statistik
type Statistics struct {
Hits uint64 // Counter of cache hits
Misses uint64 // Counter of cache misses
ByteHits uint64 // Counter of bytes transferred for gets
Items uint64 // Items currently in the cache
Bytes uint64 // Size of all items currently in the cache
Oldest int64 // Age of access of the oldest item, in seconds
}
Statistik mewakili serangkaian statistik tentang cache memcache. Item tersebut dapat mencakup item yang telah kedaluwarsa tetapi belum dihapus dari cache.
func Stats
func Stats(c context.Context) (*Statistics, error)
Statistik mengambil statistik memcache saat ini.