Condividi tramite


Avvio rapido: Usare la cache di Azure per Redis in Python

In questa guida di avvio rapido si incorpora Azure Cache for Redis in uno script Python per accedere a una cache sicura e dedicata accessibile da qualsiasi applicazione in Azure.

Passare al codice in GitHub

Se si vuole passare direttamente al codice, vedere l’Avvio rapido di Python in GitHub.

Prerequisiti

Creare un'istanza di Azure Cache per Redis

  1. Per creare una cache, accedere al portale di Azure e selezionare Crea una risorsa.

    L'opzione Crea una risorsa evidenziata nel riquadro di spostamento sinistro.

  2. Nella pagina Attività iniziali digitare Cache di Azure per Redis nella casella di ricerca. Quindi, selezionare Crea.

    Screenshot di Azure Marketplace con la cache di Azure per Redis nella casella di ricerca e l'opzione Crea è evidenziata con una casella rossa.

  3. Nella pagina Nuova cache per Redis configurare le impostazioni per la cache.

    Impostazione Scegliere un valore Descrizione
    Abbonamento Nell'elenco a discesa selezionare la sottoscrizione. Sottoscrizione in cui creare la nuova istanza della cache di Azure per Redis.
    Gruppo di risorse Nell'elenco a discesa selezionare un gruppo di risorse oppure scegliere Crea nuovo e immettere il nome di un nuovo gruppo di risorse. Nome del gruppo di risorse in cui creare la cache e altre risorse. L'inserimento di tutte le risorse di un'app in un unico gruppo di risorse ne semplifica la gestione o l'eliminazione.
    Nome DNS Immettere un nome univoco. Il nome della cache deve essere una stringa compresa tra 1 e 63 caratteri contenente solo numeri, lettere o trattini. Il nome deve iniziare e terminare con un numero o una lettera e non può contenere trattini consecutivi. Il nome host dell'istanza della cache è <nome DNS>.redis.cache.windows.net.
    Location Nell'elenco a discesa selezionare una località. Selezionare un'area in prossimità di altri servizi che useranno la cache.
    SKU della cache Nell’elenco a discesa selezionare uno SKU. Lo SKU determina le dimensioni, le prestazioni e i parametri delle funzionalità disponibili per la cache. Per altre informazioni, vedere la panoramica su Cache Redis di Azure.
    Dimensioni della cache Nell’elenco a discesa selezionare una dimensione per la cache Per altre informazioni, vedere la panoramica su Cache Redis di Azure.
  4. Selezionare la scheda Rete o selezionare il pulsante Rete nella parte inferiore della pagina.

  5. Nella scheda Rete selezionare il metodo di connettività.

  6. Selezionare la scheda Avanti: Avanzate oppure selezionare il pulsante Avanti: Avanzate nella parte inferiore della pagina per visualizzare la scheda Avanzate.

    Screenshot che mostra la scheda Avanzate nel riquadro di lavoro e l'opzione disponibile da selezionare.

    • Per le cache Basic o Standard, attivare o disattivare la selezione per una porta non TLS. È anche possibile selezionare se si vuole abilitare l'autenticazione di Microsoft Entra.
    • Per una cache Premium, configurare le impostazioni per la porta non TLS, il clustering, l'identità gestita e la persistenza dei dati. È anche possibile selezionare se si vuole abilitare l'autenticazione di Microsoft Entra.

    Importante

    Per una protezione ottimale, Microsoft consiglia di usare Microsoft Entra ID con identità gestite per autorizzare le richieste nella cache ogni volta che è possibile. L'autorizzazione con Microsoft Entra ID e le identità gestite offre sicurezza e facilità di utilizzo superiori rispetto all'autorizzazione con chiave condivisa. Per altre informazioni sull'uso delle identità gestite con le cache, vedere Usare Microsoft Entra ID per l'autenticazione della cache.

  7. Selezionare la scheda Avanti: Tag oppure selezionare il pulsante Avanti: Tag nella parte inferiore della pagina.

  8. Facoltativamente, nella scheda Tag immettere il nome e il valore se si vuole categorizzare la risorsa.

  9. Selezionare Rivedi e crea. Viene visualizzata la scheda Rivedi e crea in cui Azure convalida la configurazione.

  10. Quando viene visualizzato il messaggio di convalida verde, selezionare Crea.

La creazione di una cache richiede un po' di tempo. È possibile monitorare lo stato di avanzamento nella pagina Panoramica della cache di Azure per Redis. Quando l'elemento Stato indica In esecuzione, la cache è pronta per l'uso.

Installare la libreria redis-py

Redis py è un'interfaccia di Python per Cache Redis di Azure. Usare lo strumento per i pacchetti Python, pip, per installare il pacchetto redis-py da un prompt dei comandi.

Nell'esempio seguente è stato usato pip3 per Python 3 per installare redis-py in Windows 11 da un prompt dei comandi dell'amministratore.

Screenshot di un terminale che mostra un'installazione dell'interfaccia redis-py nella cache di Azure per Redis.

Creare uno script Python per accedere alla cache

Creare uno script Python nel quale si utilizzino Microsoft Entra ID o le chiavi di accesso per connettersi alla cache di Azure per Redis. È consigliabile usare Microsoft Entra ID.

Abilitare l'autenticazione di Microsoft Entra ID nella cache

Se si dispone già di una cache, verificare prima di tutto se è stata abilitata l'autenticazione di Microsoft Entra. In caso contrario, abilitarla. È consigliabile usare Microsoft Entra ID per le applicazioni.

  1. Nel portale di Azure selezionare l'istanza della cache di Azure per Redis in cui si vuole usare l'autenticazione basata su token di Microsoft Entra.

  2. Selezionare Autenticazione dal menu Risorsa.

  3. Controllare nel riquadro di lavoro per verificare se è selezionata l'opzione Abilita autenticazione Microsoft Entra. In tal caso, è possibile procedere.

  4. Selezionare Abilita autenticazione di Microsoft Entra e immettere il nome di un utente valido. All'utente immesso viene assegnato automaticamente il criterio di accesso Proprietario dei dati per impostazione predefinita quando si seleziona Salva. È anche possibile immettere un'identità gestita o un'entità servizio per connettersi all'istanza della cache.

    Screenshot che mostra l'opzione di autenticazione selezionata nel menu della risorsa e l'opzione con cui abilitare l'autenticazione di Microsoft Entra selezionata.

  5. Viene visualizzata una finestra di dialogo popup in cui viene chiesto se si vuole aggiornare la configurazione e viene segnalato che l'operazione richiede qualche minuto. Selezionare .

    Importante

    Al termine dell'operazione di abilitazione, i nodi nell'istanza della cache vengono riavviati per caricare la nuova configurazione. È consigliabile eseguire questa operazione durante la finestra di manutenzione o al di fuori dell'orario di ufficio di punta. L'operazione può richiedere fino a 30 minuti.

Per informazioni sull'uso di Microsoft Entra ID con l'interfaccia della riga di comando di Azure, vedere le pagine di riferimento per l'identità.

Installare Microsoft Authentication Library

  1. Installare Microsoft Authentication Library (MSAL). Questa libreria consente di acquisire token di sicurezza dall'identità Microsoft per autenticare gli utenti.

  2. È possibile usare la libreria client di identità di Python di Azure disponibile che usa MSAL per fornire il supporto per l'autenticazione dei token. Installare questa libreria tramite pip:

pip install azure-identity

Creare uno script Python usando Microsoft Entra ID

  1. Creare un nuovo file di testo, aggiungere lo script seguente e salvare il file come PythonApplication1.py.

  2. Sostituire <Your Host Name> con il valore dell'istanza in uso della cache di Azure per Redis. Il nome host è nel formato <DNS name>.redis.cache.windows.net.

  3. Sostituire <Your Username> con i valori dell'utente di Microsoft Entra ID.

    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()
    
  4. Prima di eseguire il codice Python da un terminale, assicurarsi di autorizzare il terminale per l'uso di Microsoft Entra ID.

    azd auth login

  5. Eseguire PythonApplication1.py con Python. Vengono visualizzati risultati simili all'esempio seguente:

    Screenshot di un terminale che mostra uno script Python per testare l'accesso alla cache.

Creare uno script Python usando la riautenticazione

I token di accesso a Microsoft Entra ID hanno una durata limitata, in media 75 minuti. Per mantenere una connessione alla cache, è necessario aggiornare il token. Questo esempio illustra come eseguire questa operazione usando Python.

  1. Creare un nuovo file di testo, aggiungere lo script seguente. Salvare quindi il file come PythonApplication2.py.

  2. Sostituire <Your Host Name> con il valore dell'istanza in uso della cache di Azure per Redis. Il nome host è nel formato <DNS name>.redis.cache.windows.net.

  3. Sostituire <Your Username> con i valori dell'utente di Microsoft Entra ID.

    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()
    
  4. Eseguire PythonApplication2.py con Python. Vengono visualizzati risultati simili all'esempio seguente:

    Screenshot di un terminale che mostra uno script Python per testare l'accesso alla cache.

    A differenza del primo esempio, se il token scade, in questo esempio viene aggiornato automaticamente.

Pulire le risorse

Per continuare a usare le risorse create in questo articolo, mantenere il gruppo di risorse.

In caso contrario, se le risorse sono state completate, per evitare addebiti è possibile eliminare il gruppo di risorse di Azure creato.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Quando si elimina un gruppo di risorse, tutte le risorse in esso contenute vengono eliminate in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse sbagliato o le risorse errate. Se le risorse sono state create all'interno di un gruppo di risorse esistente che contiene anche elementi da mantenere, è possibile eliminare ogni singolo elemento a sinistra anziché eliminare il gruppo di risorse.

Per eliminare un gruppo di risorse

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.

  2. Scegliere il gruppo di risorse da eliminare.

    Se sono presenti molti gruppi di risorse, usare la casella Filtro per qualsiasi campo... e digitare il nome del gruppo di risorse creato per questo articolo. Nell’elenco dei risultati selezionare il gruppo di risorse.

    Screenshot che mostra nel riquadro di lavoro un elenco dei gruppi di risorse da eliminare.

  3. Selezionare Elimina gruppo di risorse.

  4. Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Digitare il nome del gruppo di risorse per confermare e quindi selezionare Elimina.

    Screenshot che mostra un modulo richiedente il nome della risorsa per confermare l'eliminazione.

Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.