Поделиться через


Краткое руководство. Использование Azure Redis в Python

В этом кратком руководстве вы интегрируете Azure Managed Redis или Azure Cache for Redis в скрипт Python, чтобы получить доступ к защищенному выделенному кэшу, который доступен из любого приложения в Azure.

Переход к коду на GitHub

Если вы хотите сразу перейти к коду, см. краткое руководство по Python на сайте GitHub.

Предпосылки

Создайте управляемый экземпляр Redis в Azure

  1. Чтобы создать экземпляр Azure Managed Redis, войдите на портал Azure и выберите "Создать ресурс".

  2. На новой странице в поле поиска введите Кэш Azure для Redis.

  3. На вкладке "Новый кэш Redis" настройте параметры для нового кэша в основах.

    Настройки Выберите значение Описание
    Подписка Раскройте список и выберите нужную подписку. Подписка, в которой создается новый экземпляр Управляемого Redis Azure.
    Группа ресурсов Раскройте список и выберите группу ресурсов или нажмите Создать и введите имя для новой группы ресурсов. Имя группы ресурсов, в которой будут созданы кэш и другие ресурсы. Поместив все ресурсы приложения в одну группу ресурсов, вы сможете легко управлять ими и/или удалить их вместе.
    Имя Введите уникальное в пределах региона имя. Имя кэша должно быть строкой от 1 до 63 символов при сочетании с именем региона кэша, содержащим только цифры, буквы или дефисы. (Если имя кэша меньше 45 символов, оно должно работать во всех доступных регионах.) Имя должно начинаться и заканчиваться числом или буквой и не может содержать последовательные дефисы. Имя.
    Регион Раскройте список и выберите место. Управляемый Redis azure доступен в выбранных регионах Azure.
    Уровень данных Выберите в памяти для высокой производительности или Flash для более низких производительности кэшей Уровни в памяти включают Balanced, Memory Optimized и Compute Optimized. Используйте уровень Flash для работы с данными в памяти (ОЗУ) и на твердотельном накопителе (SSD).
    Размер кэша Выпадающее меню и выбор размера. Размер кэша зависит от уровня. Наименьший размер — это сбалансированный уровень. Самый большой уровень в памяти — это оптимизированный для памяти уровень.
    Производительность Разверните список и выберите предпочтение производительности. Производительность зависит от количества виртуальных ЦП. Количество виртуальных ЦП зависит от уровня. Оптимизированный для вычислений имеет наибольшее количество виртуальных ЦП.

    Рекомендации по выбору нужного уровня производительности см. в разделе "Выбор нужного уровня".

    Это важно

    Все уровни памяти с объемом хранилища более 120 ГБ находятся в общедоступной предварительной версии, включая оптимизированные по памяти M150 и выше; сбалансированные B150 и выше; и оптимизированные по вычислениям X150 и выше. Все эти уровни и выше находятся в общедоступной предварительной версии.

    Все уровни, оптимизированные для флэш-памяти, находятся в общедоступном предварительном доступе.

  4. Нажмите кнопку "Далее": сеть и выберите общедоступную конечную точку или частную конечную точку.

  5. Нажмите кнопку "Далее": активная георепликация. Чтобы использовать активную георепликацию, ее необходимо включить во время подготовки. Кэши без активной георепликации нельзя впоследствии добавлять в группы активной георепликации или присоединяться к ним. Дополнительные сведения см. в разделе "Настройка активной георепликации для экземпляров Управляемого Redis Azure".

  6. Нажмите кнопку "Далее": вкладка "Дополнительно ".

    Настройте все модули Redis , которые нужно добавить в экземпляр.

    По умолчанию для нового управляемого кэша:

    • Идентификатор Microsoft Entra включен.
    • Проверка подлинности ключей доступа отключена по соображениям безопасности.

    Это важно

    Для оптимальной безопасности рекомендуется использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к кэшу, если это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации ключа общего доступа. Для получения дополнительной информации об использовании управляемых удостоверений с кэшем см. в разделе Используйте идентификатор Microsoft Entra для проверки подлинности кэша.

    Задайте политику кластеризации:

    • Использование Enterprise для использования RedisSearch или других модулей
    • Используйте OSS для кластеризованного кэша.
    • Используйте Некластеризованный (Превью) для некластеризованного кэша.

    Дополнительные сведения о выборе политики кластеризации см. в статье "Политика кластера".

    Это важно

    После создания не удается изменить политику кластеризации управляемого экземпляра Redis Azure. Если вы используете RediSearch, требуется политика кластера Enterprise и NoEviction является единственной поддерживаемой политикой вытеснения.

    Это важно

    Если вы используете этот экземпляр кэша в группе георепликации, политики вытеснения нельзя изменить после создания экземпляра. Перед созданием кэша необходимо знать политики вытеснения основных узлов. Дополнительные сведения о активной георепликации см. в разделе "Предварительные требования для активной георепликации".

    Это важно

    После создания экземпляра кэша нельзя изменять модули. Модули должны быть включены во время создания экземпляра Кэш Azure для Redis. После создания кэша невозможно включить настройку модуля.

  7. Нажмите кнопку "Далее": теги и пропуск.

  8. Нажмите кнопку "Далее": проверка и создание.

  9. Проверьте параметры и выберите Создать.

    Создание экземпляра Redis занимает несколько минут. Ход выполнения можно отслеживать на странице обзора Управляемого Redis в Azure. Когда Состояние примет значение Running (Выполняется), кэш будет готов к использованию.

Создание экземпляра кэша Azure для Redis

  1. На портале Azure найдите и выберите кэш Azure для Redis.

  2. На странице кэша Azure для Redis выберите "Создать>кэш Azure для Redis".

  3. На вкладке "Основы" страницы"Новый кэш Redis " настройте следующие параметры:

    • Подписка. Выберите нужную подписку.
    • Группа ресурсов: выберите группу ресурсов или нажмите кнопку "Создать" и введите новое имя группы ресурсов. Размещение всех ресурсов приложения в одной группе ресурсов позволяет легко управлять и удалять их вместе.
    • Имя: введите уникальное имя кэша в регионе. Имя должно быть:
      • Должна быть строка длиной от 1 до 63 символов.
      • Содержит только цифры, буквы и дефисы.
      • Начните и закончите числом или буквой.
      • Не содержит последовательные дефисы.
    • Регион. Выберите регион Azure рядом с другими службами, используюющими кэш.
    • Номер SKU кэша: выберите номер SKU , чтобы определить доступные размеры, производительность и функции кэша.
    • Размер кэша: выберите размер кэша. Дополнительные сведения см. в статье Общие сведения о Кэше Azure для Redis.

    Снимок экрана: вкладка

  4. Выберите вкладку "Сеть" или нажмите кнопку "Далее: Сеть".

  5. На вкладке "Сеть" выберите метод подключения, используемый для кэша. Для обеспечения безопасности рекомендуется использовать частную конечную точку. Если выбрать частную конечную точку, выберите "Добавить частную конечную точку" и создайте частную конечную точку.

  6. Выберите вкладку "Дополнительно" или нажмите кнопку "Далее".

  7. На панели "Дополнительно" настройте следующие параметры:

    • Выберите Microsoft Entra Authentication или Access Keys Authentication. Проверка подлинности Microsoft Entra включена по умолчанию.
    • Выберите, следует ли включить порт, отличный от TLS.
    • Для кэша уровня "Премиум" можно настроить или отключить зоны доступности. После создания кэша невозможно отключить зоны доступности. Для кэша уровня "Стандартный" зоны доступности выделяются автоматически. Зоны доступности недоступны для базовой SKU.
    • Для кэша Premium настройте параметры для числа реплик, кластеризации и числа шардов, управляемого удостоверения, назначаемого системой, и сохранения данных.

    На следующем рисунке показана вкладка "Дополнительно " для номера SKU "Стандартный".

    Снимок экрана, отображающий вкладку

    Это важно

    Используйте Microsoft Entra ID с управляемыми удостоверениями, чтобы авторизовать запросы к кэшу, если это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемого удостоверения обеспечивает более высокую безопасность и проще использовать, чем авторизация общего ключа доступа. Для получения дополнительной информации об использовании управляемых удостоверений с кэшем см. в разделе Используйте идентификатор Microsoft Entra для проверки подлинности кэша.

  8. При необходимости выберите вкладку "Теги " или нажмите кнопку "Далее" и введите имена тегов и значения, чтобы классифицировать ресурсы кэша.

  9. Выберите "Просмотр и создание" и после прохождения проверки нажмите кнопку "Создать".

Развертывание нового кэша занимает несколько минут. Ход развертывания можно отслеживать на странице кэша Azure для Redis на портале. Когда состояние кэша отображается запущено, кэш готов к использованию.

Установка библиотеки redis-py

Redis-py — это интерфейс Python для Redis. Используйте средство пакетов Python, pipчтобы установить redis-py пакет из командной строки.

Следующий пример, используемый pip3 для установки redis-py Python 3 в Windows 11 из командной строки администратора.

Снимок экрана: терминал с установкой интерфейса redis-py для Кэш Azure для Redis.

Создание скрипта Python для доступа к кэшу

Создайте скрипт на Python, который использует либо идентификатор Microsoft Entra ID, либо ключи доступа для подключения к вашему управляемому экземпляру Redis Azure. Мы рекомендуем использовать идентификатор Microsoft Entra.

Использование проверки подлинности идентификатора Microsoft Entra в кэше

Управляемые кэши Redis в Azure поддерживают проверку подлинности Microsoft Entra по умолчанию.

  1. В портал Azure выберите кэш, в котором вы хотите использовать проверку подлинности на основе токена Microsoft Entra.

  2. Выберите проверку подлинности в меню "Ресурс".

  3. Выберите элемент и введите имя допустимого пользователя. По умолчанию, когда вы выбираете Сохранить, пользователю, которого вы вводите, автоматически назначается Политика доступа владельца данных. Вы также можете ввести управляемое удостоверение или служебный принципал, чтобы подключиться к экземпляру кэша.

    Снимок экрана: проверка подлинности, выбранная в меню ресурсов, и проверка проверки подлинности Microsoft Entra.

Сведения об использовании идентификатора Microsoft Entra с Azure CLI см. на справочных страницах для удостоверений.

Установка библиотеки проверки подлинности Майкрософт

  1. Установите библиотеку проверки подлинности Майкрософт (MSAL). Эта библиотека позволяет получать маркеры безопасности от удостоверений Майкрософт для проверки подлинности пользователей.

  2. Вы можете использовать клиентную библиотеку удостоверений Python Azure, которая использует MSAL для предоставления поддержки проверки подлинности маркеров. Установите эту библиотеку с помощью pip:

pip install azure-identity

Создание скрипта Python с помощью идентификатора Microsoft Entra

  1. Создайте текстовый файл, добавьте следующий скрипт и сохраните файл как PythonApplication1.py.

  2. Замените <Your Host Name> значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму <DNS name>.<region>.redis.azure.net.

  3. Замените <Your Username> значения пользователем идентификатора Microsoft Entra.

    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()
    
  4. Перед запуском кода Python из терминала убедитесь, что вы авторизуете терминал для использования идентификатора Microsoft Entra.

    azd auth login

  5. Запустите PythonApplication1.py с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.

    Снимок экрана: терминал, показывающий скрипт Python для тестирования доступа к кэшу.

Создание скрипта Python с помощью повторной проверки подлинности

Маркеры доступа к идентификатору Microsoft Entra имеют ограниченные сроки существования, в среднем 75 минут. Чтобы сохранить подключение к кэшу, необходимо обновить маркер. В этом примере показано, как это сделать с помощью Python.

  1. Создайте текстовый файл, добавьте следующий скрипт. Затем сохраните файл как PythonApplication2.py.

  2. Замените <Your Host Name> на значение из управляемого экземпляра Redis в Azure. Имя узла имеет форму <DNS name>.<region>.redis.azure.net.

  3. Замените <Your Username> значения пользователем идентификатора Microsoft Entra.

    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()
    
  4. Запустите PythonApplication2.py с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.

    Снимок экрана: терминал, показывающий скрипт Python для тестирования доступа к кэшу.

    В отличие от первого примера, если срок действия маркера истекает, этот пример автоматически обновляет его.

Создание скрипта Python для доступа к кэшу

Создайте скрипт Python, в который используется идентификатор Microsoft Entra или ключи доступа для подключения к экземпляру Redis. Мы рекомендуем использовать идентификатор Microsoft Entra.

Использование проверки подлинности идентификатора Microsoft Entra в кэше

Управляемые кэши Redis в Azure поддерживают проверку подлинности Microsoft Entra по умолчанию.

  1. В портал Azure выберите кэш, в котором вы хотите использовать проверку подлинности на основе токена Microsoft Entra.

  2. Выберите проверку подлинности в меню "Ресурс".

  3. Выберите элемент и введите имя допустимого пользователя. По умолчанию, когда вы выбираете Сохранить, пользователю, которого вы вводите, автоматически назначается Политика доступа владельца данных. Вы также можете ввести управляемое удостоверение или служебный принципал, чтобы подключиться к экземпляру кэша.

    Снимок экрана: проверка подлинности, выбранная в меню ресурсов, и проверка проверки подлинности Microsoft Entra.

Сведения об использовании идентификатора Microsoft Entra с Azure CLI см. на справочных страницах для удостоверений.

Установка библиотеки проверки подлинности Майкрософт

  1. Установите библиотеку проверки подлинности Майкрософт (MSAL). Эта библиотека позволяет получать маркеры безопасности от удостоверений Майкрософт для проверки подлинности пользователей.

  2. Вы можете использовать клиентную библиотеку удостоверений Python Azure, которая использует MSAL для предоставления поддержки проверки подлинности маркеров. Установите эту библиотеку с помощью pip:

pip install azure-identity

Создание скрипта Python с помощью идентификатора Microsoft Entra

  1. Создайте текстовый файл, добавьте следующий скрипт и сохраните файл как PythonApplication1.py.

  2. Замените <Your Host Name> значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму <DNS name>.redis.cache.windows.net.

  3. Замените <Your Username> значения пользователем идентификатора Microsoft Entra.

    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. Перед запуском кода Python из терминала убедитесь, что вы авторизуете терминал для использования идентификатора Microsoft Entra.

    azd auth login

  5. Запустите PythonApplication1.py с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.

    Снимок экрана: терминал, показывающий скрипт Python для тестирования доступа к кэшу.

Создание скрипта Python с помощью повторной проверки подлинности

Маркеры доступа к идентификатору Microsoft Entra имеют ограниченные сроки существования, в среднем 75 минут. Чтобы сохранить подключение к кэшу, необходимо обновить маркер. В этом примере показано, как это сделать с помощью Python.

  1. Создайте текстовый файл, добавьте следующий скрипт. Затем сохраните файл как PythonApplication2.py.

  2. Замените <Your Host Name> значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму <DNS name>.redis.cache.windows.net.

  3. Замените <Your Username> значения пользователем идентификатора Microsoft Entra.

    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. Запустите PythonApplication2.py с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.

    Снимок экрана: терминал, показывающий скрипт Python для тестирования доступа к кэшу.

    В отличие от первого примера, если срок действия маркера истекает, этот пример автоматически обновляет его.

Очистите ресурсы

Если вы хотите продолжить использовать ресурсы, созданные в этой статье, сохраните группу ресурсов.

В противном случае, если вы закончите работу с ресурсами, можно удалить созданную группу ресурсов Azure, чтобы избежать расходов.

Это важно

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы. Если вы создали ресурсы внутри существующей группы ресурсов, содержащей ресурсы, которые необходимо сохранить, можно удалить каждый ресурс по отдельности, а не удалить группу ресурсов.

Удаление группы ресурсов

  1. Войдите на портал Azure и выберите группы ресурсов.

  2. Выберите группу ресурсов, которую вы хотите удалить.

    Если существует множество групп ресурсов, используйте фильтр для любого поля... введите имя группы ресурсов, созданной для этой статьи. Выберите группу ресурсов в списке результатов.

    Снимок экрана: список групп ресурсов для удаления в рабочей области.

  3. Выберите команду Удалить группу ресурсов.

  4. Вам предлагается подтвердить удаление группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и щелкните Удалить.

    Снимок экрана: форма, для которой требуется имя ресурса для подтверждения удаления.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.