El paquete Memcache

import "google.golang.org/appengine/memcache"

Introducción

El paquete Memcache proporciona un cliente para el almacén de clave-valor distribuido en memoria de App Engine para pequeños fragmentos de datos arbitrarios.

Las operaciones fundamentales obtienen y establecen elementos, con claves según una 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")
}

y

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

Índice

Variables
func Add(c context.Context, item *Item) error
func AddMulti(c context.Context, item []*Item) error
func CompareAndSwap(c context.Context, item *Item) error
func CompareAndSwapMulti(c context.Context, item []*Item) error
func Delete(c context.Context, key string) error
func DeleteMulti(c context.Context, key []string) error
func Flush(c context.Context) error
func Get(c context.Context, key string) (*Item, error)
func GetMulti(c context.Context, key []string) (map[string]*Item, error)
func Increment(c context.Context, key string, delta int64, initialValue uint64) (newValue uint64, err error)
func IncrementExisting(c context.Context, key string, delta int64) (newValue uint64, err error)
func Set(c context.Context, item *Item) error
func SetMulti(c context.Context, item []*Item) error
type Codec
    func (cd Codec) Add(c context.Context, item *Item) error
    func (cd Codec) AddMulti(c context.Context, items []*Item) error
    func (cd Codec) CompareAndSwap(c context.Context, item *Item) error
    func (cd Codec) CompareAndSwapMulti(c context.Context, items []*Item) error
    func (cd Codec) Get(c context.Context, key string, v interface{}) (*Item, error)
    func (cd Codec) Set(c context.Context, item *Item) error
    func (cd Codec) SetMulti(c context.Context, items []*Item) error
type Item
type Statistics
    func Stats(c context.Context) (*Statistics, error)

Variables

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

func Add

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

Add escribe el elemento dado, si ya no existe ningún valor para su clave. Se muestra ErrNotStored si no se cumple esa condición.

func AddMulti

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

AddMulti es una versión por lotes de Add. Podría mostrarse appengine.MultiError.

func CompareAndSwap

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

CompareAndSwap escribe el elemento dado que mostró previamente Get, si el valor no se modificó o expulsó entre las llamadas Get y CompareAndSwap. La clave del elemento no debe cambiar entre llamadas, pero todos los demás campos del elemento pueden variar. Se muestra ErrCASConflict si el valor se modificó entre las llamadas. Se muestra ErrNotStored si el valor se expulsó entre las llamadas.

func CompareAndSwapMulti

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

CompareAndSwapMulti es una versión por lotes de CompareAndSwap. Podría mostrarse appengine.MultiError.

func Delete

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

Delete borra el elemento para la clave dada. Se muestra ErrCacheMiss si no se puede encontrar el elemento especificado. La clave debe tener como máximo 250 bytes de longitud.

func DeleteMulti

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

DeleteMulti es una versión por lotes de Delete. Si no se puede encontrar ninguna clave, se muestra appengine.MultiError. Cada clave debe tener como máximo 250 bytes de longitud.

func Flush

func Flush(c context.Context) error

Flush limpia todos los elementos de Memcache.

func Get

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

Get obtiene el elemento para la clave dada. ErrCacheMiss se muestra por un error de caché de Memcache. La clave debe tener como máximo 250 bytes de longitud.

func GetMulti

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

GetMulti es una versión por lotes de Get. El mapa que se muestra de las claves a los elementos puede tener menos elementos que la porción de entrada, debido a errores de caché de Memcache. Cada clave debe tener como máximo 250 bytes de longitud.

func Increment

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

Increment aumenta atómicamente el valor decimal en la clave dada por delta y muestra el nuevo valor. El valor debe caber en un uint64. El desbordamiento se une y el subdesbordamiento tiene un máximo de cero. El delta proporcionado puede ser negativo. Si la clave no existe en Memcache, el valor inicial proporcionado se usa para propagarla atómicamente antes de aplicar el delta. La clave debe tener como máximo 250 bytes de longitud.

func IncrementExisting

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

IncrementExisting funciona como Increment, pero supone que la clave ya existe en Memcache y no toma un valor inicial. IncrementExisting puede ahorrar trabajo si calcular el valor inicial es costoso. Se muestra un error si no se puede encontrar el elemento especificado.

func Set

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

Set escribe el elemento dado, incondicionalmente.

func SetMulti

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

SetMulti es una versión por lotes de Set. Podría mostrarse appengine.MultiError.

type Codec

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

Codec representa un par simétrico de funciones que implementan un códec. Los elementos almacenados o recuperados de Memcache que utilizan un códec tienen sus valores ordenados o no ordenados.

Todos los métodos proporcionados para Codec se comportan de manera análoga a la función de nivel de paquete con el mismo nombre.

func (Codec) Add

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

Add escribe el elemento dado, si ya no existe ningún valor para su clave. Se muestra ErrNotStored si no se cumple esa condición.

func (Codec) AddMulti

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

AddMulti es una versión por lotes de Add. Podría mostrarse appengine.MultiError.

func (Codec) CompareAndSwap

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

CompareAndSwap escribe el elemento dado que mostró previamente Get, si el valor no se modificó o expulsó entre las llamadas Get y CompareAndSwap. La clave del elemento no debe cambiar entre llamadas, pero todos los demás campos del elemento pueden variar. Se muestra ErrCASConflict si el valor se modificó entre las llamadas. Se muestra ErrNotStored si el valor se expulsó entre las llamadas.

func (Codec) CompareAndSwapMulti

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

CompareAndSwapMulti es una versión por lotes de CompareAndSwap. Podría mostrarse appengine.MultiError.

func (Codec) Get

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

Get obtiene el elemento para la clave dada y decodifica el valor obtenido en v. ErrCacheMiss se muestra por un error de caché de Memcache. La clave debe tener como máximo 250 bytes de longitud.

func (Codec) Set

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

Set escribe el elemento dado, incondicionalmente.

func (Codec) SetMulti

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

SetMulti es una versión por lotes de Set. Podría mostrarse appengine.MultiError.

type 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
    // contains filtered or unexported fields
}

Item es la unidad que Memcache obtiene y establece.

type Statistics

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 representa un conjunto de estadísticas sobre la memoria caché de Memcache. Esto puede incluir elementos que han caducado, pero que aún no se han quitado de la caché.

func Stats

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

Stats recupera las estadísticas actuales de Memcache.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go