Paket google.golang.org/appengine/memcache (Version 1.6.8)

Das Paket "memcache" bietet einen Client für den verteilten Speicher von Schlüsselwerten im Arbeitsspeicher von App Engine für kleine Blöcke beliebiger Daten.

Die grundlegenden Operationen dienen für "get"- und "set"-Vorgänge, mit einer Zeichenfolge als Schlüssel.

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")
}

und

item1 := &memcache.Item{
    Key:   "foo",
    Value: []byte("bar"),
}
if err := memcache.Set(c, item1); err != nil {
    return err
}

Variablen

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}
)

Funktionen

func Add

func Add(c context.Context, item *Item) error

"Add" schreibt das angegebene Element, wenn nicht bereits ein Wert für seinen Schlüssel vorhanden ist. "ErrNotStored" wird zurückgegeben, wenn diese Bedingung nicht erfüllt ist.

func AddMulti

func AddMulti(c context.Context, item []*Item) error

„AddMulti“ ist eine Batchversion von „Add“. Es kann „appengine.MultiError“ zurückgegeben werden.

func CompareAndSwap

func CompareAndSwap(c context.Context, item *Item) error

Mit "CompareAndSwap" wird das betreffende Element geschrieben, das zuvor durch "Get" zurückgegeben wurde, wenn der Wert zwischen dem "Get"-Aufruf und dem "CompareAndSwap"-Aufruf weder geändert noch entfernt wurde. Der Schlüssel ("Key") des Elements darf sich zwischen den Aufrufen nicht ändern, alle anderen Elementfelder können sich jedoch unterscheiden. "ErrCASConflict" wird zurückgegeben, wenn der Wert zwischen den Aufrufen geändert wurde. "ErrNotStored" wird zurückgegeben, wenn der Wert zwischen den Aufrufen entfernt wurde.

func CompareAndSwapMulti

func CompareAndSwapMulti(c context.Context, item []*Item) error

„CompareAndSwapMulti“ ist eine Batchversion von „CompareAndSwap“. Es kann „appengine.MultiError“ zurückgegeben werden.

func Delete

func Delete(c context.Context, key string) error

"Delete" löscht das Element für den gegebenen Schlüssel. Wenn das angegebene Element nicht gefunden werden kann, wird "ErrCacheMiss" zurückgegeben. Der Schlüssel darf maximal 250 Byte lang sein.

func DeleteMulti

func DeleteMulti(c context.Context, key []string) error

"DeleteMulti" ist eine Batch-Version von "Delete". Wenn keine Schlüssel gefunden werden können, wird der Fehler „appengine.MultiError” zurückgegeben. Jeder Schlüssel darf maximal 250 Byte lang sein.

func Flush

func Flush(c context.Context) error

"Flush" löscht alle Elemente aus Memcache.

func GetMulti

func GetMulti(c context.Context, key []string) (map[string]*Item, error)

"GetMulti" ist eine Batch-Version von "Get". Die zurückgegebene Zuordnung zwischen Schlüsseln und Elementen kann weniger Elemente aufweisen als das Eingabesegment. Der Grund sind mögliche Cache-Fehler bei Memcache. Jeder Schlüssel darf maximal 250 Byte lang sein.

func Increment

func Increment(c context.Context, key string, delta int64, initialValue uint64) (newValue uint64, err error)

"Increment" erhöht schrittweise den Dezimalwert im angegebenen Schlüssel automatisch um einen Deltawert und gibt den neuen Wert zurück. Der Wert muss mit einem Uint64-Wert kompatibel sein. Der Überlauf wird umschlossen und der Unterlauf auf null begrenzt. Das festgelegte Delta kann negativ sein. Wenn der Schlüssel in Memcache nicht vorhanden ist, wird dafür der angegebene Anfangswert ungeteilt verwendet, bevor das Delta angewendet wird. Der Schlüssel darf maximal 250 Byte lang sein.

func IncrementExisting

func IncrementExisting(c context.Context, key string, delta int64) (newValue uint64, err error)

"IncrementExisting" funktioniert wie "Increment", mit dem Unterschied, dass der Schlüssel bereits in Memcache vorhanden ist und keinen Ausgangswert annimmt. "IncrementExisting" kann Nutzungszeit einsparen, wenn die Berechnung des Ausgangswerts teuer ist. Wenn das angegebene Element nicht gefunden werden kann, wird ein Fehler zurückgegeben.

func PeekMulti

func PeekMulti(c context.Context, key []string) (map[string]*Item, error)

PeekMulti ist eine Batchversion von Peek. Sie ähnelt GetMulti, füllt aber zusätzlich „Item.Timestamps“ aus.

func Set

func Set(c context.Context, item *Item) error

Mit "Set" wird das betreffende Element ohne Bedingungen geschrieben.

func SetMulti

func SetMulti(c context.Context, item []*Item) error

„SetMulti“ ist eine Batchversion von „Set“. Es kann „appengine.MultiError“ zurückgegeben werden.

Codec

type Codec struct {
	Marshal   func(interface{}) ([]byte, error)
	Unmarshal func([]byte, interface{}) error
}

„Codec” steht für ein symmetrisches Paar von Funktionen, die einen Codec implementieren. Für Elemente, die mithilfe eines Codec in Memcache gespeichert bzw. aus daraus abgerufen werden, wird ein Marshalling bzw. Unmarshalling der Werte ausgeführt.

Alle für Codec bereitgestellten Methoden verhalten sich entsprechend der gleichnamigen Funktion auf Paketebene.

func (Codec) Add

func (cd Codec) Add(c context.Context, item *Item) error

"Add" schreibt das angegebene Element, wenn nicht bereits ein Wert für seinen Schlüssel vorhanden ist. "ErrNotStored" wird zurückgegeben, wenn diese Bedingung nicht erfüllt ist.

func (Codec) AddMulti

func (cd Codec) AddMulti(c context.Context, items []*Item) error

„AddMulti“ ist eine Batchversion von „Add“. Es kann „appengine.MultiError“ zurückgegeben werden.

func (Codec) CompareAndSwap

func (cd Codec) CompareAndSwap(c context.Context, item *Item) error

Mit "CompareAndSwap" wird das betreffende Element geschrieben, das zuvor durch "Get" zurückgegeben wurde, wenn der Wert zwischen dem "Get"-Aufruf und dem "CompareAndSwap"-Aufruf weder geändert noch entfernt wurde. Der Schlüssel ("Key") des Elements darf sich zwischen den Aufrufen nicht ändern, alle anderen Elementfelder können sich jedoch unterscheiden. "ErrCASConflict" wird zurückgegeben, wenn der Wert zwischen den Aufrufen geändert wurde. "ErrNotStored" wird zurückgegeben, wenn der Wert zwischen den Aufrufen entfernt wurde.

func (Codec) CompareAndSwapMulti

func (cd Codec) CompareAndSwapMulti(c context.Context, items []*Item) error

„CompareAndSwapMulti“ ist eine Batchversion von „CompareAndSwap“. Es kann „appengine.MultiError“ zurückgegeben werden.

func (Codec) Get

func (cd Codec) Get(c context.Context, key string, v interface{}) (*Item, error)

„Get“ ruft das Element für den angegebenen Schlüssel ab und decodiert den erhaltenen Wert in „v“. „ErrCacheMiss“ wird bei einem Memcache-Cache-Fehler zurückgegeben. Der Schlüssel darf maximal 250 Byte lang sein.

func (Codec) Set

func (cd Codec) Set(c context.Context, item *Item) error

Mit "Set" wird das betreffende Element ohne Bedingungen geschrieben.

func (Codec) SetMulti

func (cd Codec) SetMulti(c context.Context, items []*Item) error

„SetMulti“ ist eine Batchversion von „Set“. Es kann „appengine.MultiError“ zurückgegeben werden.

Element

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" ist die Einheit für "get"- und "set"-Vorgänge in Memcache.

func Get

func Get(c context.Context, key string) (*Item, error)

Mit "Get" wird das Element für den betreffenden Schlüssel abgerufen. „ErrCacheMiss” wird bei einem Cache-Fehler bei Memcache zurückgegeben. Der Schlüssel darf maximal 250 Byte lang sein.

func Peek

func Peek(c context.Context, key string) (*Item, error)

Peek ruft das Element für den angegebenen Schlüssel ab und füllt zusätzlich das Element „Item.Timestamps“ aus. „ErrCacheMiss” wird bei einem Cache-Fehler bei Memcache zurückgegeben. Der Schlüssel darf maximal 250 Byte lang sein.

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“ sind optional vom Server bereitgestellte Zeitstempel. Siehe Peek und PeekMulti.

Statistiken

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
}

"Statistics" stellt eine Menge an Statistiken über den Memcache-Cache dar. Diese kann Elemente enthalten, die abgelaufen sind, aber noch nicht aus dem Cache entfernt wurden.

func Stats

func Stats(c context.Context) (*Statistics, error)

"Stats" ruft die aktuellen Memcache-Statistiken ab.