Como usar o Memcache

Nesta página, descrevemos como configurar e monitorar o serviço Memcache para seu aplicativo usando o Console do Google Cloud. Você também aprenderá a usar a API App Engine Memcache Go para definir e recuperar valores armazenados em cache. Para saber mais sobre o Memcache, leia a Visão geral do Memcache.

Como configurar o Memcache

  1. Acesse a página "Memcache" no Console do Google Cloud.
    Acessar a página "Memcache"
  2. Selecione o nível de serviço do Memcache que você quer usar:

    • Compartilhado (padrão): é gratuito e fornece capacidade de cache com base no melhor esforço possível.
    • Dedicado: é cobrado por GB/hora do tamanho do cache e fornece capacidade de cache fixa atribuída exclusivamente ao seu aplicativo.

    Saiba mais sobre as classes de serviços disponíveis na Visão geral do Memcache.

Como importar a API Go

Para importar o pacote memcache:

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

Como armazenar valores em cache e como recuperá-los

Como armazenar um valor em cache

Só grave um valor para a chave usando Add() se nenhum valor tiver sido atribuído a ela anteriormente:

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

em que c é um appengine.Context.

Saiba mais sobre Add e outras funções de definição de valores na Referência da API Memcache.

Como pesquisar valores armazenados em cache

Use Get() para recuperar o item de uma determinada chave:

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

Saiba mais sobre Get e outras funções de pesquisa de valores na Referência da API Memcache.

Exemplo

Veja no exemplo a seguir como adicionar, definir e recuperar valores do Memcache usando a API Go.

Suponha que ctx é um 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)
}

Como monitorar o Memcache no Console do Google Cloud

  1. Acesse a página "Memcache" no Console do Google Cloud.
    Acessar a página "Memcache"
  2. Veja os seguintes relatórios:
    • Nível de serviço do Memcache: mostra se o aplicativo está usando o nível de serviço Compartilhado ou Dedicado. Se você for proprietário do projeto, poderá alternar entre os dois. Saiba mais sobre os níveis de serviço.
    • Taxa de acerto: mostra a porcentagem de solicitações de dados e o número bruto de solicitações de dados que foram exibidos do cache.
    • Itens no cache.
    • Idade do item mais antigo: a idade do item mais antigo armazenado em cache. Observe que a idade de um item é redefinida sempre que ele é usado, lido ou gravado.
    • Tamanho total do cache.
  3. Você pode realizar uma destas ações:

    • Nova chave: adiciona uma nova chave ao cache.
    • Encontrar uma chave: recupera uma chave existente.
    • Limpar o cache: remove todos os pares de chave-valor do cache.
  4. (Somente no Memcache dedicado) Consulte a lista de chaves com uso intenso.

    • "Chaves de uso intenso" são as que recebem mais de cem consultas por segundo (QPS, na sigla em inglês) no Memcache.
    • Essa lista inclui até 100 chaves de atalho, classificadas pelo QPS mais alto.

A seguir