Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, aprende a usar uma cache Azure Managed Redis com a linguagem Python e a ligar-se usando o Microsoft Entra ID.
Pré-requisitos
- Subscrição do Azure - crie uma gratuitamente
- Instalar o ambiente de linguagem Python 3.7+
- Adicione essas importações ao seu projeto e ao seu ambiente de desenvolvimento
-
redis- O cliente Redis Python -
redis-entraid- Extensão de autenticação Redis Microsoft Entra ID -
azure-identity- Biblioteca de autenticação do Azure
-
Criar uma instância do Azure Managed Redis
Primeiro, crie um cache. Você pode criar um cache usando o Azure Managed Redis ou o Azure Cache for Redis usando o portal do Azure. Neste Guia de início rápido, usamos o Azure Managed Redis.
Quando você cria o cache, o Microsoft Entra ID é habilitado por padrão, tornando-o seguro desde o início. O seu cache também deve usar um ponto de extremidade público para este QuickStart.
Para criar um cache com o portal, siga um destes procedimentos:
Opcionalmente, você pode criar um cache usando a CLI do Azure, o PowerShell, o que preferir.
Código para se conectar a um cache Redis
Na primeira parte do exemplo de código, defina sua conexão com o cache.
- Portas para caches Redis e Enterprise Managed do Azure: 10000
- Portas para instâncias do Azure Cache para Redis: 6380
import redis
from azure.identity import DefaultAzureCredential
from redis_entraid.cred_provider import create_from_default_azure_credential
# Connection details for your cache
# Get the connection details for the Redis instance
redis_host = "contosob116.westus3.redis.azure.net"
redis_port = 10000 #For an Azure
print("🚀 Starting Azure Redis Cache connection test...")
print(f"📡 Connecting to: {redis_host}:{redis_port}")
# Validate configuration
if not redis_host or not redis_port:
print("❌ Error: Redis host and port must be configured")
exit(1)
print() # Add a new line
try:
# Create credential provider using DefaultAzureCredential for Azure Entra ID authentication
credential_provider = create_from_default_azure_credential(
("https://redis.azure.com/.default",),)
# Create a Redis client with Azure Entra ID authentication
r = redis.Redis(host=redis_host,
port=redis_port,
ssl=True,
decode_responses=True,
credential_provider=credential_provider,
socket_timeout=10,
socket_connect_timeout=10
)
Código para testar uma conexão
Na próxima seção, teste a conexão usando o comando ping Redis que retorna o True valor.
# Ping the Redis server to test the connection
result = r.ping()
if result:
print("Ping returned: ", result)
Código definir uma chave, obter uma chave
Nesta seção, use uma sequência básica de set e get para começar a usar o cache Redis da maneira mais simples.
# Create a simple set and get operation
result = r.set("Message", "Hello, The cache is working with Python!")
print("✅ SET Message succeeded: " + str(result))
print() # Add a new line
value = r.get("Message")
if value is not None:
print("✅ GET Message returned : " + str(value))
print() # Add a new line
else:
print("⚠️ GET Message returned None")
print() # Add a new line
print("🎉 All Redis operations completed successfully!")
print() # Add a new line
Antes de executar esse código, você deve se adicionar como um usuário Redis ao cache.
Você também deve autorizar sua conexão com o Azure a partir da linha de comando usando a linha de comando do Azure ou a linha de comando do desenvolvedor do Azure (azd).
Você também deve adicionar usuários ou um principal do sistema ao cache. Adicione qualquer pessoa que possa executar o programa como um usuário no cache Redis.
O resultado é assim:
C:\utils\python-quickstart>python quickstart-amr.py
🚀 Starting Azure Redis Cache connection test...
📡 Connecting to: contosob116.westus3.redis.azure.net:10000
✅ Ping returned : True
✅ SET Message succeeded: True
✅ GET Message returned : Hello, The cache is working with Python!
🎉 All Redis operations completed successfully!
🔐 Redis connection closed
Aqui, você pode ver este exemplo de código na íntegra. O código contém alguma verificação de erro omitida das explicações de código anteriores para simplificar. A etapa final é fechar a conexão com o cache.
# Python Quickstart using Azure Entra ID authentication
# Azure Managed Redis cache that you created using the Azure portal, or CLI
# This script demonstrates secure connection using Microsoft Entra ID authentication
# This script demonstrates secure connection using the default Azure credential provider
# You should be a user on the cache and logged in to Azure CLI with the same account using `az login`
import redis
from azure.identity import DefaultAzureCredential
from redis_entraid.cred_provider import create_from_default_azure_credential
# Connection details for your cache
# Get the connection details for the Redis instance
redis_host = "<host-url>" # Replace with your cache info
redis_port = <port number> # Replace with your cache info
print("🚀 Starting Azure Redis Cache connection test...")
print(f"📡 Connecting to: {redis_host}:{redis_port}")
# Validate configuration
if not redis_host or not redis_port:
print("❌ Error: Redis host and port must be configured")
exit(1)
print() # Add a new line
try:
# Create credential provider using DefaultAzureCredential for Azure Entra ID authentication
credential_provider = create_from_default_azure_credential(
("https://redis.azure.com/.default",),)
# Create a Redis client with Azure Entra ID authentication
r = redis.Redis(host=redis_host,
port=redis_port,
ssl=True,
decode_responses=True,
credential_provider=credential_provider,
socket_timeout=10,
socket_connect_timeout=10
)
# Test connection
result = r.ping()
print("✅ Ping returned : " + str(result))
print() # Add a new line
# Create a simple set and get operation
result = r.set("Message", "Hello, The cache is working with Python!")
print("✅ SET Message succeeded: " + str(result))
print() # Add a new line
value = r.get("Message")
if value is not None:
print("✅ GET Message returned : " + str(value))
print() # Add a new line
else:
print("⚠️ GET Message returned None")
print() # Add a new line
print("🎉 All Redis operations completed successfully!")
print() # Add a new line
except redis.ConnectionError as e:
print(f"❌ Connection error: {e}")
print("💡 Check if Redis host and port are correct, and ensure network connectivity")
print() # Add a new line
except redis.AuthenticationError as e:
print(f"❌ Authentication error: {e}")
print("💡 Check if Azure Entra ID authentication is properly configured")
print() # Add a new line
except redis.TimeoutError as e:
print(f"❌ Timeout error: {e}")
print("💡 Check network latency and Redis server performance")
print() # Add a new line
except Exception as e:
print(f"❌ Unexpected error: {e}")
if "999" in str(e):
print("💡 Error 999 typically indicates a network connectivity issue or firewall restriction")
print(" - Verify the Redis hostname is correct")
print(" - Verify that you have logged in with Az CLI")
print(" - Ensure the Redis cache is running and accessible")
print() # Add a new line
finally:
# Clean up connection if it exists
if 'r' in locals():
try:
r.close()
print("🔐 Redis connection closed")
except Exception as e:
print(f"❌ Error closing connection: {e}")
Limpeza de recursos
Se quiser continuar a usar os recursos criados neste artigo, mantenha o grupo de recursos.
Caso contrário, se tiver terminado os recursos, pode eliminar o grupo de recursos do Azure que criou para evitar cobranças.
Importante
A eliminação de um grupo de recursos é irreversível. Quando elimina um grupo de recursos, todos os recursos nele contidos são eliminados permanentemente. Certifique-se de que não elimina acidentalmente grupos de recursos ou recursos errados. Se você criou os recursos dentro de um grupo de recursos existente que contém recursos que deseja manter, poderá excluir cada recurso individualmente em vez de excluir o grupo de recursos.
Para eliminar um grupo de recursos
Inicie sessão no Portal do Azure e selecione Grupos de recursos.
Selecione o grupo de recursos que pretende eliminar.
Se houver muitos grupos de recursos, use a caixa Filtrar para qualquer campo... , digite o nome do grupo de recursos criado para este artigo. Selecione o grupo de recursos na lista de resultados.
Selecione Eliminar grupo de recursos.
É-lhe pedido que confirme a eliminação do grupo de recursos. Escreva o nome do grupo de recursos para confirmar e, em seguida, selecione Eliminar.
Após alguns instantes, o grupo de recursos e todos os respetivos recursos são eliminados.