Usa Memcache

En esta página, se describe cómo configurar y supervisar el servicio de Memcache para la aplicación con la consola de Google Cloud. También se explica cómo usar la API de Go de Memcache de App Engine para configurar y recuperar valores almacenados en caché. Si quieres aprender más sobre Memcache, consulta Descripción general de Memcache.

Cómo configurar Memcache

  1. Ve a la página de Memcache en la consola de Google Cloud.
    Ir a la página de Memcache
  2. Selecciona el nivel de servicio de Memcache que desees usar:

    • Compartido (predeterminado): es gratuito y proporciona capacidades de caché sobre la base del "mejor esfuerzo".
    • Dedicado: se factura por GB por hora de tamaño de caché y proporciona una capacidad de caché fija asignada exclusivamente a tu aplicación.

    Puedes aprender más sobre clases de servicio disponibles en Descripción general de Memcache.

Importa la API de Go

Haz esto para importar el paquete memcache:

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

Almacena en caché y recupera valores

Almacena un valor en caché

Usa Add() a fin de escribir un valor para una clave solo si no existe ningún valor dedicado a ella:

item := &memcache.Item{
        Key:   "[KEY]",
        Value: []byte("[VALUE]"),
}
memcache.Add(c, item)

donde c es appengine.Context.

Obtén más información sobre Add y otras funciones para establecer valores en Referencia de la API de Memcache.

Busca valores almacenados en caché

Usa Get() para obtener el elemento de una clave determinada:

memcache.Get(ctx, "[KEY]")

Obtén más información sobre Get y otras funciones para buscar valores en Referencia de la API de Memcache.

Ejemplo

En el ejemplo que aparece a continuación, se muestra cómo agregar, configurar y obtener valores de Memcache mediante la API de Go.

Supón que ctx es appengine.Context.

// Create an Item
item := &memcache.Item{
	Key:   "lyric",
	Value: []byte("Oh, give me a home"),
}
// Add the item to the memcache, if the key does not already exist
if err := memcache.Add(ctx, item); err == memcache.ErrNotStored {
	log.Infof(ctx, "item with key %q already exists", item.Key)
} else if err != nil {
	log.Errorf(ctx, "error adding item: %v", err)
}

// Change the Value of the item
item.Value = []byte("Where the buffalo roam")
// Set the item, unconditionally
if err := memcache.Set(ctx, item); err != nil {
	log.Errorf(ctx, "error setting item: %v", err)
}

// Get the item from the memcache
if item, err := memcache.Get(ctx, "lyric"); err == memcache.ErrCacheMiss {
	log.Infof(ctx, "item not in the cache")
} else if err != nil {
	log.Errorf(ctx, "error getting item: %v", err)
} else {
	log.Infof(ctx, "the lyric is %q", item.Value)
}

Supervisa Memcache en la consola de Google Cloud

  1. Ve a la página de Memcache en la consola de Google Cloud.
    Ir a la página de Memcache
  2. Consulta los siguientes informes:
    • Nivel de servicio de Memcache: Muestra si tu aplicación usa el nivel de servicio Compartido o Dedicado. Si eres propietario del proyecto, puedes alternar entre ambos. Obtén más información sobre los niveles de servicio.
    • Proporción de aciertos: Muestra el porcentaje de solicitudes de datos que se entregaron desde la caché y la cantidad de solicitudes de datos sin procesar que se entregaron desde la caché.
    • Elementos en la caché.
    • Edad del elemento más antiguo: Edad del elemento almacenado en caché más antiguo. Ten en cuenta que la edad de un elemento se restablece cada vez que se usa, ya sea en operaciones de lectura o de escritura.
    • Tamaño total de caché
  3. Puedes realizar cualquiera de las siguientes acciones:

    • Clave nueva: agrégale una clave a la caché.
    • Encontrar una clave: recupera una clave existente.
    • Limpiar caché: quita todos los pares clave-valor de la caché.
  4. (Solo para Memcache dedicada) Consulta la lista de claves populares.

    • Las "claves populares" son claves que reciben más de 100 consultas por segundo (QPS) en Memcache.
    • La lista incluye hasta 100 claves populares ordenadas de mayor a menor cantidad de QPS.

¿Qué sigue?