Compartilhar via


Início Rápido: Criar um aplicativo Python com o Redis Gerenciado do Azure

Neste artigo, você aprenderá a usar um cache Redis Gerenciado do Azure com a linguagem Python e se conectar usando a ID do Microsoft Entra.

Pré-requisitos

  • Assinatura do Azure - criar uma gratuitamente
  • Instalar o ambiente Python 3.7+
  • Adicione essas importações de seu projeto e ao seu ambiente de desenvolvimento
    • redis - O cliente Python Redis
    • redis-entraid - Extensão de autenticação do Redis para Microsoft Entra ID
    • azure-identity – Biblioteca de autenticação do Azure

Criar uma instância do Redis Gerenciado pelo Azure

Primeiro, crie um cache. Você pode criar um cache usando o Redis Gerenciado do Azure ou o Cache do Azure para Redis usando o portal do Azure. Neste Início Rápido, usamos o Redis Gerenciado do Azure.

Quando você cria o cache, a ID do Microsoft Entra é habilitada por padrão, tornando-a segura desde o início. O seu cache também deve usar um ponto de extremidade público para este Início Rápido.

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 Redis Gerenciado do Azure e caches Enterprise: 10000
  • Portas para instâncias do Cache do Azure 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)

Definir uma chave de código, 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 forma 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 adicionar-se como um usuário redis ao cache.

Você também deve autorizar sua conexão com o Azure 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 seu cache. Adicione qualquer pessoa que possa executar o programa como um usuário no cache Redis.

O resultado tem esta aparência:

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 em sua totalidade. O código contém algumas verificações de erro omitidas 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}")

Limpar os recursos

Se você quiser continuar a usar os recursos criados neste artigo, mantenha o grupo de recursos.

Caso contrário, se tiver terminado de usar os recursos, é possível excluir o grupo de recursos do Azure criado para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. Ao excluir o grupo de recursos, todos os recursos nele são excluídos permanentemente. Certifique-se de que não exclua acidentalmente o grupo de recursos ou os recursos incorretos. Se você criou os recursos dentro de um grupo de recursos existente que contém recursos que você deseja manter, é possível excluir cada recurso individualmente em vez de excluir o grupo de recursos.

Para excluir um grupo de recursos

  1. Entre no portal do Azure e selecione Grupos de recursos.

  2. Selecione o grupo de recursos que você quer excluir.

    Se houver muitos grupos de recursos, use a caixa Filtrar por qualquer campo... digite o nome do grupo de recursos que você criou para este artigo. Selecione o grupo de recursos na lista de resultados.

    Captura de tela mostrando uma lista de grupos de recursos a serem excluídos no painel de trabalho.

  3. Selecione Excluir grupo de recursos.

  4. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Digite o nome do grupo de recursos para confirmar e selecione Excluir.

    Captura de tela mostrando um formulário que requer o nome do recurso para confirmar a exclusão.

Após alguns instantes, o grupo de recursos, e todos os recursos nele são excluídos.