Le package Memcache fournit un client pour le magasin valeur/clé en mémoire distribué d'App Engine destiné à de petits segments de données arbitraires.
Les opérations de base récupèrent et définissent des éléments, associés par une chaîne.
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") }
et
item1 := &memcache.Item{ Key: "foo", Value: []byte("bar"), } if err := memcache.Set(c, item1); err != nil { return err }
Variables
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}
)
Fonctions
func Add
La fonction Add écrit l'élément donné, si aucune valeur n'existe déjà pour sa clé. Affiche ErrNotStored si cette condition n'est pas remplie.
func AddMulti
La fonction AddMulti est une version traitement par lot de la fonction Add. Une erreur appengine.MultiError peut être renvoyée.
func CompareAndSwap
La fonction CompareAndSwap écrit l'élément donné qui a déjà été renvoyé par Get, si la valeur n'a pas été modifiée ni supprimée entre les appels Get et CompareAndSwap. La clé d'élément ne doit pas changer entre les appels, mais tous les autres champs d'élément peuvent être différents. Affiche ErrCASConflict si la valeur a été modifiée entre les appels. Affiche ErrNotStored si la valeur a été supprimée entre les appels.
func CompareAndSwapMulti
La fonction CompareAndSwapMulti est une version par lot de la fonction CompareAndSwap. Une erreur appengine.MultiError peut être renvoyée.
func Delete
La fonction Delete supprime l'élément pour la clé donnée. Une erreur ErrCacheMiss est affichée si l'élément spécifié est introuvable. La longueur de la clé ne doit pas dépasser 250 octets.
func DeleteMulti
La fonction DeleteMulti est une version traitement par lot de la fonction Delete. Si aucune clé ne peut être trouvée, une erreur appengine.MultiError est renvoyée. La longueur de chaque clé ne doit pas dépasser 250 octets.
func Flush
La fonction Flush purge tous les éléments de Memcache.
func GetMulti
La fonction GetMulti est une version traitement par lot de la fonction Get. L'objet map clé/élément affiché risque de présenter moins d'éléments que la tranche saisie, en raison des défauts de cache (miss) Memcache. La longueur de chaque clé ne doit pas dépasser 250 octets.
func Incrément
func Increment(c context.Context, key string, delta int64, initialValue uint64) (newValue uint64, err error)
La fonction Increment incrémente de manière atomique la valeur décimale dans la clé donnée par la valeur delta et affiche la nouvelle valeur. La valeur doit tenir dans une plage uint64. La valeur de dépassement positive est encapsulée et la valeur de dépassement négative est limitée à zéro. La valeur delta fournie peut être négative. Si la clé n'existe pas dans Memcache, la valeur initiale fournie est utilisée pour l'insérer de manière atomique avant que la valeur delta ne soit appliquée. La longueur de la clé ne doit pas dépasser 250 octets.
func IncrementExisting
La fonction IncrementExisting fonctionne comme la fonction Increment, mais suppose que la clé existe déjà dans Memcache et ne prend pas de valeur initiale. IncrementExisting peut permettre une économie de travail si le calcul de la valeur initiale est coûteux. Une erreur est affichée si l'élément spécifié est introuvable.
func PeekMulti
PeekMulti est une version en traitement par lot de Peek. Elle est semblable à la fonction GetMulti, mais renseigne également les objets Item.Timestamps.
func Set
La fonction Set écrit l'élément donné, sans condition.
func SetMulti
La fonction SetMulti est une version traitement par lot de la fonction Set. Une erreur appengine.MultiError peut être renvoyée.
Codec
type Codec struct {
Marshal func(interface{}) ([]byte, error)
Unmarshal func([]byte, interface{}) error
}
Le type Codec correspond à une paire symétrique de fonctions qui met en œuvre un codec. Les éléments stockés ou extraits de Memcache à l'aide d'un Codec présentent des valeurs classées ou non.
Toutes les méthodes fournies pour Codec se comportent de manière analogue à la fonction du package portant le même nom.
func (Codec) Add
La fonction Add écrit l'élément donné, si aucune valeur n'existe déjà pour sa clé. Affiche ErrNotStored si cette condition n'est pas remplie.
func (Codec) AddMulti
La fonction AddMulti est une version traitement par lot de la fonction Add. Une erreur appengine.MultiError peut être renvoyée.
func (Codec) CompareAndSwap
La fonction CompareAndSwap écrit l'élément donné qui a déjà été renvoyé par Get, si la valeur n'a pas été modifiée ni supprimée entre les appels Get et CompareAndSwap. La clé d'élément ne doit pas changer entre les appels, mais tous les autres champs d'élément peuvent être différents. Affiche ErrCASConflict si la valeur a été modifiée entre les appels. Affiche ErrNotStored si la valeur a été supprimée entre les appels.
func (Codec) CompareAndSwapMulti
La fonction CompareAndSwapMulti est une version par lot de la fonction CompareAndSwap. Une erreur appengine.MultiError peut être renvoyée.
func (Codec) Get
La fonction Get récupère l'élément pour la clé donnée et décode la valeur obtenue en v. Une erreur ErrCacheMiss est affichée en cas de défaut de cache (miss) Memcache. La clé ne doit pas dépasser 250 octets.
func (Codec) Set
La fonction Set écrit l'élément donné, sans condition.
func (Codec) SetMulti
La fonction SetMulti est une version traitement par lot de la fonction Set. Une erreur appengine.MultiError peut être renvoyée.
Élément
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
}
Le type Item est l'unité des requêtes de type Get et Set de Memcache.
func Get
La fonction Get récupère l'élément de la clé donnée. Renvoie une erreur ErrCacheMiss en cas de défaut de cache (miss) Memcache. La longueur de la clé ne doit pas dépasser 250 octets.
func Peek
La fonction Peek récupère l'élément pour la clé donnée et renseigne également Item.Timestamps. Renvoie une erreur ErrCacheMiss en cas de défaut de cache (miss) Memcache. La longueur de la clé ne doit pas dépasser 250 octets.
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
}
Les éléments ItemTimestamp sont des horodatages éventuellement fournis par le serveur. Voir Peek et PeekMulti.
Statistiques
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
}
Le type Statistics représente un ensemble de statistiques relatives au cache mémoire. Il peut inclure des éléments qui ont expiré, mais qui n'ont pas encore été supprimés du cache.
func Stats
func Stats(c context.Context) (*Statistics, error)
La fonction Stats extrait les statistiques actuelles de Memcache.