Compartilhar via


Início Rápido: Usar o Cache do Azure para Redis com um aplicativo Python

Neste início rápido, você incorporará o Cache do Azure para Redis em um script Python para acessar um cache seguro e dedicado que pode ser acessado de qualquer aplicativo no Azure.

Ir para o código

Este artigo descreve como criar um aplicativo Python e modificar o código para acabar com um aplicativo de exemplo em funcionamento.

Se você quiser pular diretamente para o código, confira o Exemplo do guia de início rápido do Python no GitHub.

Pré-requisitos

Criar um cache

  1. Para criar um cache, entre no portal do Azure. No menu do portal, selecione Criar um recurso.

    Captura de tela mostrando a opção Criar um recurso realçada no painel de navegação esquerdo no portal do Azure.

  2. Na página Introdução, insira Cache do Azure para Redis na barra de pesquisa. Nos resultados da pesquisa, localize o Cache do Azure para Redis e selecione Criar.

    Captura de tela mostrando o Azure Marketplace com o Cache do Azure para Redis na caixa de pesquisa e o botão Criar está realçado.

  3. No painel Novo Cache Redis, na guia Básico, defina as seguintes configurações para seu cache:

    Configuração Ação Descrição
    Assinatura Selecione sua assinatura do Azure. A assinatura a ser usada para criar a nova instância do Cache do Azure para Redis.
    Grupo de recursos Selecione um grupo de recursos ou selecione Criar novo e insira um novo nome de grupo de recursos. Um nome para o grupo de recursos no qual seu cache e outros recursos serão criados. Ao colocar todos os seus recursos de aplicativos em um só grupo de recursos, você pode gerenciá-los ou excluí-los juntos com facilidade.
    Nome DNS Insira um nome exclusivo. O nome de cache precisa ser uma cadeia de caracteres de 1 a 63 caracteres que contenha somente números, letras e hifens. O nome deve começar e terminar com um número ou uma letra e não pode conter hifens consecutivos. O nome do host da instância de cache é \<DNS name>.redis.cache.windows.net.
    Localidade Selecione uma localização. Uma região do Azure próxima a outros serviços que usam seu cache.
    Cache SKU Selecione um SKU. O SKU determina os parâmetros de tamanho, desempenho e recurso disponíveis para o cache. Para obter mais informações, consulte Visão geral do Cache do Azure para Redis.
    Tamanho do cache Selecione um tamanho de cache. Para obter mais informações, consulte Visão geral do Cache do Azure para Redis.
  4. Selecione a guia Rede ou selecione Avançar: Rede.

  5. Na guia Rede, selecione um método de conectividade a ser usado para o cache.

  6. Selecione a guia Avançado ou selecione Avançar: Avançado.

  7. No painel Avançado, verifique ou selecione um método de autenticação com base nas seguintes informações:

    Captura de tela mostrando o painel Avançado e as opções disponíveis a serem selecionadas.

    • Por padrão, para um novo cache Básico, Standard ou Premium, a Autenticação do Microsoft Entra está habilitada e a Autenticação de Chaves de Acesso está desabilitada.
    • Para caches Básico ou Standard, é possível escolher a seleção de uma porta não TLS.
    • Para caches Standard e Premium, é possível optar por habilitar zonas de disponibilidade. Não é possível desabilitar zonas de disponibilidade após a criação do cache.
    • Para um cache Premium, defina as configurações para porta não TLS, clustering, identidade gerenciada e persistência de dados.

    Importante

    Para obter a segurança ideal, recomendamos que você use o Microsoft Entra ID com identidades gerenciadas para autorizar solicitações no seu cache, se possível. A autorização usando o Microsoft Entra ID e identidades gerenciadas oferece maior segurança e facilidade de uso em comparação com a autorização por chave de acesso compartilhada. Para obter mais informações sobre como usar identidades gerenciadas com seu cache, consulte Usar o Microsoft Entra ID para a autenticação de cache.

  8. (Opcional) Selecione a guia Marcas ou selecione Avançar: Marcas.

  9. (Opcional) Na guia Marcas, insira um nome de marca e um valor se você quiser categorizar seu recurso de cache.

  10. Selecione o botão Revisar + criar.

    Na guia Revisar + criar, o Azure valida automaticamente sua configuração.

  11. Depois que a mensagem em verde Validação aprovada for exibida, selecione Criar.

Uma nova implantação de cache ocorre ao longo de vários minutos. Você pode monitorar o progresso da implantação no painel Visão Geral do Cache do Azure para Redis. Quando o Status mostrar Em execução, o cache estará pronto para ser usado.

Instalar a biblioteca redis-py

Redis-py é uma interface de Python para o Cache do Azure para Redis. Use a ferramenta de pacotes Python pip para instalar o pacote redis-py em uma linha de comando.

O exemplo a seguir usa pip3 do Python 3 para instalar o redis-py no Windows 11 em uma janela do Prompt de Comando do Administrador.

Captura de tela de um terminal mostrando uma instalação da interface redis-py para Cache do Azure para Redis.

Crie um script Python para acessar seu cache

Crie um script Python que use o Microsoft Entra ID ou chaves de acesso para se conectar a um Cache do Azure para Redis. Recomendamos que você use o Microsoft Entra ID.

Habilitar a autenticação do Microsoft Entra no seu cache

Para um cache existente, primeiro verifique se a autenticação do Microsoft Entra está habilitada. Caso contrário, conclua as etapas a seguir para habilitar a autenticação do Microsoft Entra. Recomendamos que você use o Microsoft Entra ID para autenticação em seus aplicativos.

  1. No portal do Azure, selecione a instância do Cache do Azure para Redis onde você gostaria de usar a autenticação baseada em token do Microsoft Entra.

  2. No menu de serviço, em Configurações, selecione Autenticação.

  3. No painel Autenticação, verifique se a caixa de seleção Habilitar Autenticação do Microsoft Entra está marcada. Se estiver, você poderá passar para a próxima seção.

  4. Caso contrário, marque a caixa de seleção Habilitar Autenticação do Microsoft Entra. Em seguida, insira o nome de um usuário válido. Selecione Salvar. O nome de usuário inserido é atribuído automaticamente à Política de Acesso do Proprietário de Dados.

    Você também pode inserir uma identidade gerenciada ou uma entidade de serviço para se conectar à instância de cache.

    Captura de tela que mostra a Autenticação selecionada no menu de serviço e a caixa de seleção Habilitar Autenticação do Microsoft Entra marcada.

  5. Em uma caixa de diálogo, será perguntado se você deseja atualizar sua configuração e informado que a atualização leva vários minutos para ser concluída. Selecione Sim.

    Importante

    Depois que a operação de habilitação for concluída, os nós de cache serão reinicializados para carregar a nova configuração. Recomendamos que você conclua esta operação durante a janela de manutenção padrão ou fora do horário comercial de pico. O processo pode levar até 30 minutos.

Para obter informações sobre como usar o Microsoft Entra ID com a CLI do Azure, consulte as páginas de referência de identidade.

Instalar a Biblioteca de Autenticação da Microsoft

A MSAL (Biblioteca de Autenticação da Microsoft) permite que você adquira tokens de segurança da plataforma de identidade da Microsoft para autenticar usuários.

Para instalar a MSAL:

  1. Instale a MSAL para Python.

  2. Instale a biblioteca de clientes da Identidade do Azure para Python. A biblioteca usa a MSAL para fornecer suporte à autenticação de token.

    Instale esta biblioteca usando pip:

pip install azure-identity

Crie um script Python usando o Microsoft Entra ID

  1. Crie um arquivo de texto. Salve o arquivo como PythonApplication1.py.

  2. Em PythonApplication1.py, adicione e modifique o script a seguir.

    No script:

    • Substitua o <Your Host Name> pelo valor da sua instância do Cache do Azure para Redis. O nome do host tem o formato <DNS name>.redis.cache.windows.net.
    • Substitua <Your Username> pelos valores do seu usuário do 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()
    
  3. Antes de executar seu código Python em um terminal, autorize o terminal a usar o Microsoft Entra ID:

    azd auth login

  4. Execute o arquivo PythonApplication1.py usando Python. Verifique se a saída é semelhante a este exemplo:

    Captura de tela de um terminal mostrando um script Python para testar o acesso ao cache.

Crie um script Python usando a reautenticação

Um token de acesso do Microsoft Entra ID tem um tempo de vida limitado de aproximadamente 75 minutos. Para manter uma conexão com o seu cache, você precisa atualizar o token.

Este exemplo demonstra como atualizar um token usando o Python.

  1. Crie um arquivo de texto. Salve o arquivo como PythonApplication2.py.

  2. Em PythonApplication2.py, adicione e modifique o script a seguir.

    No script:

    • Substitua o <Your Host Name> pelo valor da sua instância do Cache do Azure para Redis. O nome do host tem o formato <DNS name>.redis.cache.windows.net.
    • Substitua <Your Username> pelos valores do seu usuário do 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()
    
  3. Execute o arquivo PythonApplication2.py usando o Python. Verifique se a saída é semelhante a este exemplo:

    Captura de tela de um terminal mostrando um script Python para testar o acesso ao cache.

    Ao contrário do exemplo anterior, se o token expirar, o código neste exemplo atualizará automaticamente o token.

Limpar os recursos

Se quiser continuar a usar os recursos que você criou neste artigo, conserve o grupo de recursos.

Caso contrário, para evitar encargos relacionados aos recursos, se você já tiver terminado de usá-los, pode excluir o grupo de recursos do Azure que você criou.

Aviso

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. Não exclua acidentalmente o grupo de recursos ou os recursos incorretos. Se você criou os recursos em um grupo de recursos existente que tem recursos que você quer manter, você pode excluir cada recurso individualmente em vez de excluir o grupo todo.

Excluir um grupo de recursos

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

  2. Selecione o grupo de recursos a ser excluído.

    Se houver muitos grupos de recursos, em Filtrar para qualquer campo, insira o nome do grupo de recursos que você criou para concluir este artigo. Na lista de resultados da pesquisa, selecione o grupo de recursos.

    Captura de tela mostrando uma lista de grupos de recursos para escolher e excluir.

  3. Selecione Excluir grupo de recursos.

  4. No painel Excluir um grupo de recursos, insira o nome do grupo de recursos para confirmar e selecione Excluir.

    Captura de tela mostrando uma caixa que requer a inserção do nome do recurso para confirmar a exclusão.

Em poucos instantes, o grupo de recursos e todos os seus recursos são excluídos.