Antes de começar, verifique se o aplicativo permanecerá dentro das cotas do Memorystore para Redis.
Quando usar um cache de memória
Os dados da sessão, as preferências do usuário e outros dados retornados por consultas a páginas da Web são bons candidatos para armazenamento em cache. Em geral, se uma consulta executada com frequência retorna um conjunto de resultados que não precisam aparecer no seu aplicativo imediatamente, é possível armazená-los em cache. As solicitações posteriores só poderão verificar o cache e consultar o banco de dados se os resultados estiverem ausentes ou tiverem expirado.
Se você armazenar um valor apenas no Memorystore sem fazer backup no armazenamento permanente, verifique se o aplicativo se comporta de maneira aceitável quando o valor expirar e for removido do cache. Por exemplo, se a ausência repentina dos dados da sessão de um usuário fizer a sessão funcionar incorretamente, esses dados provavelmente serão armazenados no banco de dados, além do Memorystore.
Noções básicas sobre as permissões do Memorystore
Toda interação com um serviço do Google Cloud precisa ser autorizada. Por exemplo, para interagir com um banco de dados do Redis hospedado pelo Memorystore, seu aplicativo precisa fornecer as credenciais de uma conta que está autorizada a acessar o Memorystore.
Por padrão, o aplicativo fornece as credenciais da conta de serviço padrão do App Engine, que está autorizada a acessar bancos de dados no mesmo projeto que o aplicativo.
Se alguma das seguintes condições for verdadeira, você precisará usar uma técnica de autenticação alternativa que forneça credenciais explicitamente:
Seu aplicativo e o banco de dados do Memorystore estão em projetos diferentes do Google Cloud.
Você alterou os papéis atribuídos à conta de serviço padrão do App Engine.
Para saber mais sobre técnicas de autenticação alternativas, veja Como configurar a autenticação para aplicativos de produção de servidor para servidor.
Visão geral do uso do Memorystore
Para usar o Memorystore no seu aplicativo:
Configure o Memorystore para Redis, que exige que você crie uma instância do Redis no Memorystore e um acesso VPC sem servidor que o aplicativo usará para se comunicar com a instância do Redis. A ordem de criação dessas duas entidades independentes não é estrita e pode ser configurada em qualquer ordem. As instruções neste guia mostram primeiro a configuração do acesso VPC sem servidor.
Instale uma biblioteca de cliente para o Redis e use os comandos do Redis para armazenar dados em cache.
O Memorystore para Redis é compatível com qualquer biblioteca de cliente para Redis. Neste guia, descrevemos o uso da biblioteca de cliente Jedis para enviar comandos do Redis pelo seu app. Para detalhes sobre como usar o Jedis, consulte a wiki do Jedis (links em inglês).
Como configurar o Memorystore para Redis
Para configurar o Memorystore para Redis:
Conecte o App Engine a uma rede VPC. Seu aplicativo só pode se comunicar com o Memorystore por meio de um conector VPC.
Não se esqueça de adicionar as informações de conexão de VPC ao arquivo
app.yaml
, conforme descrito em Como configurar seu aplicativo para usar um conector.Anote o endereço IP e o número da porta da instância do Redis criada. Você usará essas informações ao criar um cliente Redis no seu código.
Crie uma instância do Redis no Memorystore.
Quando solicitado a selecionar uma região para sua instância do Redis, escolha a mesma região em que o aplicativo do App Engine está localizado.
Como instalar dependências
Para disponibilizar a biblioteca de cliente Jedis para seu app quando ele for executado no App Engine, adicione a biblioteca às dependências do app. Por exemplo, se você usa o Maven, adicione a seguinte dependência ao arquivopom.xml
:
Como criar um cliente Redis
Para interagir com um banco de dados Redis, seu código precisa criar um cliente Redis para gerenciar a conexão com o banco de dados Redis. Nas seções a seguir descrevemos a criação de um cliente Redis usando a biblioteca de cliente Jedis.
Como especificar variáveis de ambiente
A biblioteca de cliente Jedis usa duas variáveis de ambiente para montar o URL do banco de dados do Redis:
- Uma variável para identificar o endereço IP do banco de dados do Redis criado no Memorystore.
- Uma variável para identificar o número da porta do banco de dados do Redis criado no Memorystore.
Recomendamos que você defina essas variáveis no arquivo app.yaml
do aplicativo em vez de defini-las diretamente no código. Isso facilita a execução do aplicativo em diferentes ambientes, como um ambiente local e o App Engine.
app.yaml
:
env_variables:
redis.host: '10.112.12.112'
redis.port: '6379'
Como importar Jedis e criar o cliente
Ao usar a biblioteca Jedis, recomendamos que você crie um JedisPool (em inglês) e use o pool para criar um cliente. As seguintes linhas de código usam as variáveis de ambienteredis.host
e redis.port
definidas anteriormente para criar um pool:
Para criar um cliente a partir do pool, use o método JedisPool.getResource()
.
Exemplo:
Como usar comandos do Redis para armazenar e recuperar dados no cache
Embora o banco de dados do Memorystore para Redis seja compatível com a maioria dos comandos do Redis, você só precisa usar alguns deles para armazenar e recuperar dados do cache. A tabela a seguir sugere comandos do Redis que você pode usar para armazenar dados em cache. Para saber como chamar esses comandos a partir do aplicativo, veja a documentação da sua biblioteca de cliente.
Tarefa | Comando do Redis |
---|---|
Criar uma entrada no cache de dados e definir um prazo de validade para a entrada |
SETNX MSETNX |
Recuperar dados do cache | GET MGET |
Substituir valores de cache existentes | SET MSET |
Aumentar ou diminuir valores de cache numéricos | INCR INCRBY DECR DECRBY |
Excluir entradas do cache | DEL UNLINK |
Fornecer suporte a interações simultâneas com o cache | Veja detalhes sobre as transações do Redis. |
Como testar suas atualizações
Ao testar seu aplicativo localmente, considere a execução de uma instância local do Redis para evitar a interação com dados de produção (o Memorystore não fornece um emulador). Para instalar e executar o Redis localmente, siga as instruções na documentação do Redis. Ainda não é possível executar o Redis localmente no Windows.
Implantar o app
Quando seu aplicativo estiver em execução no servidor de desenvolvimento local sem erros:
Se o aplicativo for executado sem erros, use a divisão de tráfego para aumentar gradualmente o tráfego para o aplicativo atualizado. Monitore de perto o aplicativo em busca de problemas no banco de dados antes de direcionar mais tráfego para o aplicativo atualizado.