Nesta página, explicamos como se conectar a uma instância do cluster do Memorystore para Redis.
Suporte ao cliente
O cluster do Memorystore para Redis não fornece bibliotecas próprias de cliente, mas oferece suporte a bibliotecas de cliente atuais de terceiros compatíveis com o protocolo Redis. Uma lista de exemplo de clientes pode ser encontrada na página Clientes do Redis.
Práticas recomendadas para clientes Redis
Para se conectar à sua instância do Cluster do Memorystore para Redis usando o cliente Python redis-py, adicione o skip_full_coverage_check=True
ao declarar um Cluster do Redis:
from rediscluster import RedisCluster
endpoints = [{"host": "IPADDRESS", "port": "6379"}]
rdb = RedisCluster(
startup_nodes=endpoints,
skip_full_coverage_check=True, # Required for Memorystore
decode_responses = True)
print(rdb.set('PYTHON', 'CLUSTER'))
print(rdb.get('PYTHON'))
print(rdb.unlink('PYTHON'))
Acesso entre regiões
É possível acessar uma instância de cluster do Memorystore para Redis a partir de um cliente localizado em uma região diferente daquela em que a instância do Memorystore está localizada.
Ver o endpoint de descoberta do cluster
Para ver o endpoint de descoberta do cluster do Memorystore, use as seguintes instruções:
Console
Acesse a página Cluster do Memorystore para Redis no Console do Google Cloud.
Clique no ID do cluster.
Na seção Conectar-se a esta instância, anote o Endereço IP interno e a Porta de conexão. Esses dois valores usados juntos são o endpoint de descoberta do cluster.
gcloud
Para ver o endpoint de descoberta do cluster, execute a CLI gcloud describe
, conforme explicado na seção Visualizar detalhes da instância.
A saída será semelhante a esta:
createTime: '2023-05-30T19:47:37.850985390Z'
discoveryEndpoints:
- address: 10.142.0.10
port: 6379
pscConfig:
network: projects/my-project-364018/global/networks/default
projectId: my-project-364018
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: 87b47146-217d-472e-96e5-13962c0e8706
Anote o endereço do endpoint e o número da porta listados na seção discovery_endpoints:
. Esses dois valores usados juntos são o endpoint de descoberta do cluster.
Conectar a partir de uma VM do Compute Engine usando redis-cli
É possível se conectar à instância do Cluster do Memorystore para Redis a partir de qualquer VM do Compute Engine que use a rede autorizada da instância do Memorystore.
Para se conectar à instância:
Se você ainda não tiver uma VM do Compute Engine que use a rede autorizada para sua instância de cluster do Memorystore para Redis, crie uma e conecte-se a ela seguindo o Guia de início rápido para criar uma VM do Linux.
Instale
redis-cli
na VM do Compute Engine. Se você criou uma VM baseada em Debian do Linux, poderá executar o seguinte comando no terminal SSH do Compute Engine:sudo apt-get update sudo apt-get install redis
Execute o comando a seguir no terminal do cluster do Memorystore para Redis, substituindo as variáveis pelos valores apropriados.
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
Em que:
- DISCOVERY_ENDPOINT_ADDRESS e PORT_NUMBER são os valores que você anotou na etapa anterior.
Depois de se conectar, digite alguns comandos do Redis:
Insira o seguinte:
PING
Result:
PONG
Enter
SET HELLO WORLD
Result:
OK
Insira o seguinte:
GET HELLO
Resultado:
"WORLD"
Quando terminar de testar a conexão com a instância do Redis, exclua a VM do Compute Engine usada para se conectar à instância do Redis. Isso ajuda a evitar cobranças na sua conta do Cloud Billing.
Conecte-se com segurança a um cluster do Memorystore usando stunnel e telnet
Nesta seção, fornecemos um exemplo de como se conectar a uma instância de cluster do Memorystore para Redis que tem a criptografia em trânsito ativada usando stunnel.
Se você ainda não tiver um cluster do Memorystore com a criptografia em trânsito ativada, crie um seguindo Criar uma instância com criptografia em trânsito.
Se você ainda não tiver uma VM do Compute Engine que use a mesma rede autorizada que a instância do Redis da etapa anterior, crie uma e se conecte a ela seguindo o Guia de início rápido sobre como usar uma VM do Linux.
Instale as ferramentas necessárias para este guia:
sudo apt-get install stunnel4
sudo apt-get install telnet
Configure a VM do Compute Engine para uso com o stunnel:
Crie um novo arquivo para colocar a Autoridade de certificação (CA, na sigla em inglês) executando o seguinte comando:
sudo vim /tmp/server_ca.pem
Visualize as autoridades de certificação da instância do Redis executando o comando a seguir no terminal padrão usado para gerenciar os recursos do Google Cloud (não o terminal do Compute Engine):
gcloud alpha redis clusters get-cluster-certificate-authority --cluster-id=CLUSTER_ID
Copie todas as autoridades de certificação visíveis, incluindo a linha
-----BEGIN CERTIFICATE-----
e as linhas-----END CERTIFICATE-----
, e cole e salve o arquivoserver_ca.pem
criado anteriormente.Crie um novo arquivo para colocar as informações de configuração do stunnel:
sudo vim /etc/stunnel/redis-client.conf
Cole o texto a seguir no arquivo, substituindo DISCOVERY_ENDPOINT_ADDRESS pelo endereço IP do endpoint de conexão de serviço particular do cluster:
output=/tmp/stunnel.log CAfile=/tmp/server_ca.pem client=yes pid=/var/run/stunnel.pid verifyChain=yes sslVersion=TLSv1.2 [redis] accept=127.0.0.1:6379 connect=DISCOVERY_ENDPOINT_ADDRESS:PORT_NUMBER
Iniciar stunnel:
sudo stunnel /etc/stunnel/redis-client.conf
Verifique se o stunnel é executado:
ps aux | grep stunnel
Reinicie o stunnel:
sudo systemctl restart stunnel4
Para se conectar à sua instância do Redis usando o Redis, execute o seguinte comando:
redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
Depois de se conectar, digite alguns comandos do Redis:
Insira o seguinte:
PING
Resultado:
PONG