Snabbstart: Använda Azure Redis i Python
I den här snabbstarten införlivar du Azure Managed Redis (förhandsversion) eller Azure Cache for Redis i ett Python-skript för att få åtkomst till en säker, dedikerad cache som är tillgänglig från alla program i Azure.
Hoppa till koden på GitHub
Om du vill hoppa direkt till koden kan du läsa Python-snabbstarten på GitHub.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Python 3
- För macOS eller Linux laddar du ned från python.org.
- För Windows 11 använder du Windows Store.
Skapa en Azure Managed Redis-instans (förhandsversion)
Om du vill skapa en Azure Managed Redis-instans (förhandsversion) loggar du in på Azure Portal och väljer Skapa en resurs.
På sidan Nytt skriver du Azure Cache for Redis i sökrutan.
På sidan Ny Redis Cache konfigurerar du inställningarna för din nya cache.
Inställning Välj ett värde beskrivning Abonnemang Listrutan och välj din prenumeration. Den prenumeration som den nya Azure Managed Redis-instansen ska skapas under. Resursgrupp Listrutan och välj en resursgrupp eller välj Skapa ny och ange ett nytt resursgruppsnamn. Namn på den resursgrupp där cacheminnet och andra resurser ska skapas. Genom att placera alla dina appresurser i en resursgrupp kan du enkelt hantera eller ta bort dem tillsammans. DNS-namn Ange ett namn som är unikt i regionen. Cachenamnet måste vara en sträng mellan 1 och 63 tecken när det kombineras med cachens regionnamn som endast innehåller siffror, bokstäver eller bindestreck. (Om cachenamnet är mindre än 45 tecken bör det fungera i alla tillgängliga regioner.) Namnet måste börja och sluta med ett tal eller en bokstav och får inte innehålla bindestreck i följd. Värdnamnet för cacheinstansen är \<DNS name\>.\<Azure region\>.redis.azure.net
.Plats Listrutan och välj en plats. Azure Managed Redis är tillgängligt i valda Azure-regioner. Cachetyp Listrutan och välj prestandanivå och cachestorlek. Nivån avgör prestanda för Redis-instansen, medan cachestorleken avgör vilket minne som är tillgängligt för lagring av data. Information om hur du väljer rätt prestandanivå finns i Välja rätt nivå Välj Nästa: Nätverk och välj antingen en offentlig eller privat slutpunkt.
Välj Nästa: Avancerat.
Konfigurera alla Redis-moduler som du vill lägga till i instansen.
Som standard för en ny hanterad cache:
- Microsoft Entra-ID är aktiverat.
- Autentisering av åtkomstnycklar är inaktiverat av säkerhetsskäl.
Viktigt!
För optimal säkerhet rekommenderar vi att du använder Microsoft Entra-ID med hanterade identiteter för att auktorisera begäranden mot din cache om möjligt. Auktorisering med hjälp av Microsoft Entra-ID och hanterade identiteter ger överlägsen säkerhet och användarvänlighet för auktorisering av delad åtkomstnyckel. Mer information om hur du använder hanterade identiteter med din cache finns i Använda Microsoft Entra-ID för cacheautentisering.
Ange Klustringsprincip till Företag för en icke-grupperad cache eller till OSS för en klustrad cache. Mer information om hur du väljer klustringsprincip finns i Klusterprincip.
Om du använder aktiv geo-replikering måste den konfigureras när den skapas. Mer information finns i Konfigurera aktiv geo-replikering för Azure Managed Redis-instanser.
Viktigt!
Du kan inte ändra klustringsprincipen för en Azure Managed Redis-instans (förhandsversion) när du har skapat den. Om du använder RediSearch krävs enterprise-klusterprincipen och
NoEviction
är den enda borttagningsprincipen som stöds.Viktigt!
Om du använder den här cacheinstansen i en geo-replikeringsgrupp kan borttagningsprinciper inte ändras när instansen har skapats. Se till att känna till borttagningsprinciperna för dina primära noder innan du skapar cacheminnet. Mer information om aktiv geo-replikering finns i Krav för aktiv geo-replikering.
Viktigt!
Du kan inte ändra moduler när du har skapat en cacheinstans. Moduler måste aktiveras när du skapar en Azure Cache for Redis-instans. Det finns inget alternativ för att aktivera konfigurationen av en modul när du har skapat en cache.
Välj Nästa: Taggar och hoppa över.
Välj Nästa: Granska + skapa.
Granska inställningarna och välj Skapa.
Det tar flera minuter för Redis-instansen att skapa. Du kan övervaka förloppet på översiktssidan för Azure Managed Redis. När Status visas som Körs är cachen redo att användas.
Skapa en Azure Cache for Redis-instans
Om du vill skapa en cache loggar du in på Azure Portal. På portalmenyn väljer du Skapa en resurs.
I fönstret Kom igång anger du Azure Cache for Redis i sökfältet. I sökresultaten letar du upp Azure Cache for Redis och väljer sedan Skapa.
I fönstret Ny Redis Cache på fliken Grundläggande konfigurerar du följande inställningar för din cache:
Inställning Åtgärd beskrivning Abonnemang Välj din Azure-prenumerationen. Prenumerationen som ska användas för att skapa den nya instansen av Azure Cache for Redis. Resursgrupp Välj en resursgrupp eller välj Skapa ny och ange ett nytt resursgruppsnamn. Ett namn på resursgruppen där du kan skapa cacheminnet och andra resurser. Genom att placera alla dina appresurser i en resursgrupp kan du enkelt hantera eller ta bort dem tillsammans. DNS-namn Ange ett unikt namn. Cachenamnet måste vara en sträng på 1 till 63 tecken som endast innehåller siffror, bokstäver och bindestreck. Namnet måste börja och sluta med ett tal eller en bokstav, och det får inte innehålla bindestreck i följd. Värdnamnet för cacheinstansen är \<DNS name>.redis.cache.windows.net
.Plats Välj en plats. En Azure-region som ligger nära andra tjänster som använder din cache. Cache-SKU Välj en SKU. SKU:n avgör vilka storleks-, prestanda- och funktionsparametrar som är tillgängliga för cachen. Mer information finns i Översikt över Azure Cache for Redis. Cachestorlek Välj en cachestorlek. Mer information finns i Översikt över Azure Cache for Redis. Välj fliken Nätverk eller välj Nästa: Nätverk.
På fliken Nätverk väljer du en anslutningsmetod som ska användas för cacheminnet.
Välj fliken Avancerat eller välj Nästa: Avancerat.
I fönstret Avancerat kontrollerar eller väljer du en autentiseringsmetod baserat på följande information:
- Som standard aktiveras Microsoft Entra-autentisering för en ny Basic-, Standard- eller Premium-cache och åtkomstnycklarnas autentisering inaktiveras.
- För Basic- eller Standard-cacheminnen kan du välja valet för en icke-TLS-port.
- För Standard- och Premium-cacheminnen kan du välja att aktivera tillgänglighetszoner. Du kan inte inaktivera tillgänglighetszoner när cacheminnet har skapats.
- För en Premium-cache konfigurerar du inställningarna för icke-TLS-port, klustring, hanterad identitet och datapersistence.
Viktigt!
För optimal säkerhet rekommenderar vi att du använder Microsoft Entra-ID med hanterade identiteter för att auktorisera begäranden mot din cache om möjligt. Auktorisering med hjälp av Microsoft Entra-ID och hanterade identiteter ger överlägsen säkerhet och användarvänlighet för auktorisering av delad åtkomstnyckel. Mer information om hur du använder hanterade identiteter med din cache finns i Använda Microsoft Entra-ID för cacheautentisering.
(Valfritt) Välj fliken Taggar eller välj Nästa: Taggar.
(Valfritt) På fliken Taggar anger du ett taggnamn och värde om du vill kategorisera cacheresursen.
Välj knappen Granska + skapa.
På fliken Granska + skapa verifierar Azure automatiskt din konfiguration.
När det gröna verifieringsmeddelandet har skickats väljer du Skapa.
En ny cachedistribution sker under flera minuter. Du kan övervaka förloppet för distributionen i översiktsfönstret Azure Cache for Redis. När Status visar Körs är cachen redo att användas.
Installera redis-py-biblioteket
Redis-py är ett Python-gränssnitt till Redis. Använd Python-paketverktyget , pip
för att installera redis-py
paketet från en kommandotolk.
Följande exempel används pip3
för att installera redis-py
Python 3 på Windows 11 från en kommandotolk för administratör.
Skapa ett Python-skript för att komma åt din cache
Skapa ett Python-skript till som använder antingen Microsoft Entra-ID eller åtkomstnycklar för att ansluta till din Azure Managed Redis-instans (förhandsversion). Vi rekommenderar att du använder Microsoft Entra-ID.
Använda Microsoft Entra-ID-autentisering i cacheminnet
Azure Redis-cacheminnen, förutom Enterprise- och Enterprise Flash-nivåer, har Microsoft Entra-autentisering aktiverat som standard. Åtkomstnycklar är inaktiverade som standard.
Viktigt!
Microsoft rekommenderar att du använder Microsoft Entra-ID-autentisering för den säkraste autentiseringsupplevelsen i stället för att använda lösenord eller åtkomstnycklar. Autentiseringen som beskrivs i det här avsnittet i artikeln använder åtkomstnycklar, som kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns när du använder Microsoft Entra-ID. Använd metoden i det här dokumentet endast när Microsoft Entra ID-autentisering inte är genomförbar.
I Azure Portal väljer du den cache där du vill använda Microsoft Entra-tokenbaserad autentisering.
Välj Autentisering på resursmenyn.
Välj Välj medlem och ange namnet på en giltig användare. Användaren som du anger tilldelas automatiskt åtkomstprincip för dataägare som standard när du väljer Spara. Du kan också ange en hanterad identitet eller tjänstens huvudnamn för att ansluta till cacheinstansen.
Information om hur du använder Microsoft Entra-ID med Azure CLI finns i referenssidorna för identitet.
Installera Microsoft Authentication Library
Installera Microsoft Authentication Library (MSAL). Med det här biblioteket kan du hämta säkerhetstoken från Microsoft-identitet för att autentisera användare.
Du kan använda Python Azure-identitetsklientbiblioteket som använder MSAL för att tillhandahålla stöd för tokenautentisering. Installera det här biblioteket med :
pip
pip install azure-identity
Skapa ett Python-skript med Microsoft Entra-ID
Skapa en ny textfil, lägg till följande skript och spara filen som
PythonApplication1.py
.Ersätt
<Your Host Name>
med värdet från din Azure Cache for Redis-instans. Värdnamnet är av formuläret<DNS name>.<region>.redis.azure.net
.Ersätt
<Your Username>
med värdena från din Microsoft Entra-ID-användare.import redis from azure.identity import DefaultAzureCredential scope = "https://redis.azure.com/.default" host = "<Your Host Name>" port = 10000 user_name = "<Your Username>" def hello_world(): cred = DefaultAzureCredential() token = cred.get_token(scope) r = redis.Redis(host=host, port=port, ssl=True, # ssl connection is required. username=user_name, password=token.token, decode_responses=True) result = r.ping() print("Ping returned : " + str(result)) result = r.set("Message", "Hello!, The cache is working with Python!") print("SET Message returned : " + str(result)) result = r.get("Message") print("GET Message returned : " + result) result = r.client_list() print("CLIENT LIST returned : ") for c in result: print(f"id : {c['id']}, addr : {c['addr']}") if __name__ == '__main__': hello_world()
Innan du kör Python-koden från en terminal måste du auktorisera terminalen för att använda Microsoft Entra-ID.
azd auth login
Kör
PythonApplication1.py
med Python. Du bör se resultat som i följande exempel:
Skapa ett Python-skript med hjälp av omautentisering
Microsoft Entra ID-åtkomsttoken har begränsad livslängd, i genomsnitt 75 minuter. För att upprätthålla en anslutning till cacheminnet måste du uppdatera token. Det här exemplet visar hur du gör detta med hjälp av Python.
Skapa en ny textfil och lägg till följande skript. Spara sedan filen som
PythonApplication2.py
.Ersätt
<Your Host Name>
med värdet från din Azure Managed Redis-instans (förhandsversion). Värdnamnet är av formuläret<DNS name>.<region>.redis.azure.net
.Ersätt
<Your Username>
med värdena från din Microsoft Entra-ID-användare.import time import logging import redis from azure.identity import DefaultAzureCredential scope = "https://redis.azure.com/.default" host = "<Your Host Name>" port = 10000 user_name = "<Your Username>" def re_authentication(): _LOGGER = logging.getLogger(__name__) cred = DefaultAzureCredential() token = cred.get_token(scope) r = redis.Redis(host=host, port=port, ssl=True, # ssl connection is required. username=user_name, password=token.token, decode_responses=True) max_retry = 3 for index in range(max_retry): try: if _need_refreshing(token): _LOGGER.info("Refreshing token...") tmp_token = cred.get_token(scope) if tmp_token: token = tmp_token r.execute_command("AUTH", user_name, token.token) result = r.ping() print("Ping returned : " + str(result)) result = r.set("Message", "Hello!, The cache is working with Python!") print("SET Message returned : " + str(result)) result = r.get("Message") print("GET Message returned : " + result) result = r.client_list() print("CLIENT LIST returned : ") for c in result: print(f"id : {c['id']}, addr : {c['addr']}") break except redis.ConnectionError: _LOGGER.info("Connection lost. Reconnecting.") token = cred.get_token(scope) r = redis.Redis(host=host, port=port, ssl=True, # ssl connection is required. username=user_name, password=token.token, decode_responses=True) except Exception: _LOGGER.info("Unknown failures.") break def _need_refreshing(token, refresh_offset=300): return not token or token.expires_on - time.time() < refresh_offset if __name__ == '__main__': re_authentication()
Kör
PythonApplication2.py
med Python. Du bör se resultat som i följande exempel:Till skillnad från det första exemplet, om din token upphör att gälla, uppdateras den automatiskt i det här exemplet.
Skapa ett Python-skript för att komma åt din cache
Skapa ett Python-skript till som använder antingen Microsoft Entra-ID eller åtkomstnycklar för att ansluta till din Redis-instans. Vi rekommenderar att du använder Microsoft Entra-ID.
Använda Microsoft Entra-ID-autentisering i cacheminnet
Azure Redis-cacheminnen, förutom Enterprise- och Enterprise Flash-nivåer, har Microsoft Entra-autentisering aktiverat som standard. Åtkomstnycklar är inaktiverade som standard.
Viktigt!
Microsoft rekommenderar att du använder Microsoft Entra-ID-autentisering för den säkraste autentiseringsupplevelsen i stället för att använda lösenord eller åtkomstnycklar. Autentiseringen som beskrivs i det här avsnittet i artikeln använder åtkomstnycklar, som kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns när du använder Microsoft Entra-ID. Använd metoden i det här dokumentet endast när Microsoft Entra ID-autentisering inte är genomförbar.
I Azure Portal väljer du den cache där du vill använda Microsoft Entra-tokenbaserad autentisering.
Välj Autentisering på resursmenyn.
Välj Välj medlem och ange namnet på en giltig användare. Användaren som du anger tilldelas automatiskt åtkomstprincip för dataägare som standard när du väljer Spara. Du kan också ange en hanterad identitet eller tjänstens huvudnamn för att ansluta till cacheinstansen.
Information om hur du använder Microsoft Entra-ID med Azure CLI finns i referenssidorna för identitet.
Installera Microsoft Authentication Library
Installera Microsoft Authentication Library (MSAL). Med det här biblioteket kan du hämta säkerhetstoken från Microsoft-identitet för att autentisera användare.
Du kan använda Python Azure-identitetsklientbiblioteket som använder MSAL för att tillhandahålla stöd för tokenautentisering. Installera det här biblioteket med :
pip
pip install azure-identity
Skapa ett Python-skript med Microsoft Entra-ID
Skapa en ny textfil, lägg till följande skript och spara filen som
PythonApplication1.py
.Ersätt
<Your Host Name>
med värdet från din Azure Cache for Redis-instans. Värdnamnet är av formuläret<DNS name>.redis.cache.windows.net
.Ersätt
<Your Username>
med värdena från din Microsoft Entra-ID-användare.import redis from azure.identity import DefaultAzureCredential scope = "https://redis.azure.com/.default" host = "<Your Host Name>" port = 6380 user_name = "<Your Username>" def hello_world(): cred = DefaultAzureCredential() token = cred.get_token(scope) r = redis.Redis(host=host, port=port, ssl=True, # ssl connection is required. username=user_name, password=token.token, decode_responses=True) result = r.ping() print("Ping returned : " + str(result)) result = r.set("Message", "Hello!, The cache is working with Python!") print("SET Message returned : " + str(result)) result = r.get("Message") print("GET Message returned : " + result) result = r.client_list() print("CLIENT LIST returned : ") for c in result: print(f"id : {c['id']}, addr : {c['addr']}") if __name__ == '__main__': hello_world()
Innan du kör Python-koden från en terminal måste du auktorisera terminalen för att använda Microsoft Entra-ID.
azd auth login
Kör
PythonApplication1.py
med Python. Du bör se resultat som i följande exempel:
Skapa ett Python-skript med hjälp av omautentisering
Microsoft Entra ID-åtkomsttoken har begränsad livslängd, i genomsnitt 75 minuter. För att upprätthålla en anslutning till cacheminnet måste du uppdatera token. Det här exemplet visar hur du gör detta med hjälp av Python.
Skapa en ny textfil och lägg till följande skript. Spara sedan filen som
PythonApplication2.py
.Ersätt
<Your Host Name>
med värdet från din Azure Cache for Redis-instans. Värdnamnet är av formuläret<DNS name>.redis.cache.windows.net
.Ersätt
<Your Username>
med värdena från din Microsoft Entra-ID-användare.import time import logging import redis from azure.identity import DefaultAzureCredential scope = "https://redis.azure.com/.default" host = "<Your Host Name>" port = 6380 user_name = "<Your Username>" def re_authentication(): _LOGGER = logging.getLogger(__name__) cred = DefaultAzureCredential() token = cred.get_token(scope) r = redis.Redis(host=host, port=port, ssl=True, # ssl connection is required. username=user_name, password=token.token, decode_responses=True) max_retry = 3 for index in range(max_retry): try: if _need_refreshing(token): _LOGGER.info("Refreshing token...") tmp_token = cred.get_token(scope) if tmp_token: token = tmp_token r.execute_command("AUTH", user_name, token.token) result = r.ping() print("Ping returned : " + str(result)) result = r.set("Message", "Hello!, The cache is working with Python!") print("SET Message returned : " + str(result)) result = r.get("Message") print("GET Message returned : " + result) result = r.client_list() print("CLIENT LIST returned : ") for c in result: print(f"id : {c['id']}, addr : {c['addr']}") break except redis.ConnectionError: _LOGGER.info("Connection lost. Reconnecting.") token = cred.get_token(scope) r = redis.Redis(host=host, port=port, ssl=True, # ssl connection is required. username=user_name, password=token.token, decode_responses=True) except Exception: _LOGGER.info("Unknown failures.") break def _need_refreshing(token, refresh_offset=300): return not token or token.expires_on - time.time() < refresh_offset if __name__ == '__main__': re_authentication()
Kör
PythonApplication2.py
med Python. Du bör se resultat som i följande exempel:Till skillnad från det första exemplet, om din token upphör att gälla, uppdateras den automatiskt i det här exemplet.
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
Logga in på Azure-portalen och välj Resursgrupper.
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.
Välj Ta bort resursgrupp.
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.
Efter en liten stund tas resursgruppen och de resurser som finns i den bort.