Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego artykułu dowiesz się, jak używać usługi Azure Managed Redis Cache w języku Python i łączyć się przy użyciu Microsoft Entra ID.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Instalowanie środowiska językowego języka Python w wersji 3.7 lub nowszej
- Dodaj te importy do swojego projektu i środowiska deweloperskiego.
-
redis- Klient języka Python usługi Redis -
redis-entraid— Rozszerzenie uwierzytelniania Microsoft Entra ID w usłudze Redis -
azure-identity— Biblioteka uwierzytelniania platformy Azure
-
Tworzenie wystąpienia usługi Redis zarządzanej platformy Azure
Najpierw utwórz pamięć podręczną. Pamięć podręczną można utworzyć przy użyciu usługi Azure Managed Redis lub Azure Cache for Redis przy użyciu witryny Azure Portal. W tym przewodniku Szybki start użyjemy usługi Azure Managed Redis.
Po utworzeniu pamięci podręcznej identyfikator Entra firmy Microsoft jest domyślnie włączony, dzięki czemu jest on bezpieczny od samego początku. Pamięć podręczna musi również używać publicznego punktu końcowego na potrzeby tego przewodnika szybkiego startu.
Aby utworzyć pamięć podręczną za pomocą portalu, wykonaj jedną z następujących procedur:
- Azure Managed Redis
- Azure Cache for Redis
Opcjonalnie możesz utworzyć pamięć podręczną przy użyciu interfejsu wiersza polecenia platformy Azure, programu PowerShell, niezależnie od tego, co wolisz.
Kod połączenia z pamięcią podręczną Redis
Skonfiguruj połączenie z pamięcią podręczną w pierwszej części przykładu kodu.
- Porty dla Azure Managed Redis i Enterprise cache: 10000
- Porty dla wystąpień usługi Azure Cache for 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
)
Kod do testowania połączenia
W następnej sekcji przetestuj połączenie przy użyciu polecenia Redis ping, które zwraca wartość True.
# Ping the Redis server to test the connection
result = r.ping()
if result:
print("Ping returned: ", result)
Kod ustawia klucz, pobierz klucz
W tej sekcji użyj podstawowej sekwencji set i get, aby rozpocząć korzystanie z pamięci podręcznej Redis w najprostszy sposób.
# 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
Przed uruchomieniem tego kodu musisz dodać siebie jako użytkownika usługi Redis do pamięci podręcznej.
Musisz również autoryzować połączenie z platformą Azure z poziomu wiersza polecenia przy użyciu wiersza polecenia platformy Azure lub wiersza polecenia dla deweloperów platformy Azure (azd).
Należy również dodać użytkowników lub jednostkę systemu do pamięci podręcznej. Dodaj dowolną osobę, która może uruchomić program jako użytkownik w pamięci podręcznej Redis Cache.
Wynik wygląda następująco:
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
W tym miejscu możesz zobaczyć ten przykładowy kod w całości. Kod zawiera pewne sprawdzanie błędów pominięte we wcześniejszych wyjaśnieniach kodu dla uproszczenia. Ostatnim krokiem jest zamknięcie połączenia z pamięcią podręczną.
# 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}")
Uprzątnij zasoby
Jeśli chcesz nadal korzystać z zasobów utworzonych w tym artykule, zachowaj grupę zasobów.
W przeciwnym razie, jeśli skończysz z zasobami, możesz usunąć utworzoną grupę zasobów platformy Azure, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Jeśli usuniesz grupę zasobów, wszystkie zawarte w niej zasoby zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów. Jeśli zasoby zostały utworzone w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, możesz usunąć każdy zasób indywidualnie zamiast usuwać grupę zasobów.
Aby usunąć grupę zasobów
Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Grupy zasobów.
Wybierz grupę zasobów, którą chcesz usunąć.
Jeśli istnieje wiele grup zasobów, użyj pola Filtruj dla dowolnego pola... wpisz nazwę grupy zasobów utworzonej dla tego artykułu. Wybierz grupę zasobów na liście wyników.
Wybierz pozycję Usuń grupę zasobów.
Poproszono Cię o potwierdzenie usunięcia grupy zasobów. Wpisz nazwę grupy zasobów w celu potwierdzenia, a następnie wybierz pozycję Usuń.
Po krótkim czasie grupa zasobów i wszystkie jej zasoby zostaną usunięte.