Dela via


Snabbstart: Använda Azure Redis med Python

I den här artikeln får du lära dig hur du använder en Azure Redis-cache med Python-språket och ansluter med Hjälp av Microsoft Entra-ID.

Förutsättningar

  • Azure-prenumeration – skapa en kostnadsfritt
  • Installera en python 3.7+ -språkmiljö
  • Lägg till dessa importer från till projektet och i utvecklingsmiljön
    • redis – Redis Python-klient
    • redis-entraid – Redis Microsoft Entra ID-autentiseringstillägg
    • azure-identity – Azure-autentiseringsbibliotek

Skapa en Azure Managed Redis-instans

Skapa först en cache. Du kan skapa en cache med Azure Managed Redis eller Azure Cache for Redis med hjälp av Azure-portalen. I den här snabbstarten använder vi Azure Managed Redis.

När du skapar cachen är Microsoft Entra-ID aktiverat som standard, vilket gör det säkert från början. Cacheminnet måste också använda en offentlig slutpunkt för den här snabbstarten.

Om du vill skapa en cache med portalen följer du någon av följande procedurer:

Du kan också skapa en cache med hjälp av Azure CLI, PowerShell, efter preferens.

Kod för att ansluta till en Redis-cache

I den första delen av kodexemplet anger du anslutningen till cacheminnet.

  • Portar för Azure Managed Redis och Enterprise-cacharna: 10000
  • Portar för Azure Cache for Redis-instanser: 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
                    )

Kod för att testa en anslutning

I nästa avsnitt testar du anslutningen med kommandot Redis ping som returnerar True värdet.

# Ping the Redis server to test the connection
result = r.ping()
if result:
    print("Ping returned: ", result)

Sätt en nyckel, hämta en nyckel

I det här avsnittet använder du en grundläggande set och get-sekvens för att börja använda Redis-cachen på ett så enkelt sätt som möjligt.

    # 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

Innan du kan köra den här koden måste du lägga till dig själv som Redis-användare i cacheminnet.

Du måste också auktorisera anslutningen till Azure från kommandoraden med hjälp av Azure-kommandoraden eller Azure Developer-kommandoraden (azd).

Du bör också lägga till användare eller ett systemhuvudnamn i cacheminnet. Lägg till alla som kan köra programmet som användare i Redis-cachen.

Resultatet ser ut så här:

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

Här kan du se det här kodexemplet i sin helhet. Koden innehåller vissa felkontroller som utelämnats från de tidigare kodförklaringarna för enkelhetens skull. Det sista steget är att stänga anslutningen till cacheminnet.

# 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}")

Rensa resurser

Om du vill fortsätta att använda de resurser som du skapade i den här artikeln behåller du resursgruppen.

Om du är klar med resurserna kan du ta bort den Azure-resursgrupp som du skapade för att undvika avgifter.

Viktigt!

Att ta bort en resursgrupp kan inte ångras. När du tar bort en resursgrupp tas alla resurser som ingår i den bort permanent. Kontrollera att du inte av misstag tar bort fel resursgrupp eller resurser. Om du har skapat resurserna i en befintlig resursgrupp som innehåller resurser som du vill behålla kan du ta bort varje resurs individuellt i stället för att ta bort resursgruppen.

Ta bort en resursgrupp

  1. Logga in på Azure-portalen och välj Resursgrupper.

  2. Välj den resursgrupp som du vill ta bort.

    Om det finns många resursgrupper använder du rutan Filter för alla fält... och skriver namnet på resursgruppen som du skapade för den här artikeln. Välj resursgruppen i resultatlistan.

    Skärmbild som visar en lista över resursgrupper som ska tas bort i arbetsfönstret.

  3. Välj Ta bort resursgrupp.

  4. Du blir ombedd att bekräfta borttagningen av resursgruppen. Skriv namnet på din resursgrupp för att bekräfta och välj sedan Ta bort.

    Skärmbild som visar ett formulär som kräver resursnamnet för att bekräfta borttagningen.

Efter en liten stund tas resursgruppen och de resurser som finns i den bort.