Краткое руководство. Использование Azure Redis в Python
В этом кратком руководстве описано, как включить Управляемый Redis Azure (предварительная версия) или Кэш Azure для Redis в скрипт Python для доступа к защищенному выделенному кэшу, доступному из любого приложения в Azure.
Переход к коду на GitHub
Если вы хотите сразу перейти к коду, см. краткое руководство по Python на сайте GitHub.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Python 3
- Для macOS или Linux скачайте python.org.
- Для Windows 11 используйте Магазин Windows.
Создание экземпляра Управляемого Redis (предварительная версия) Azure
Чтобы создать экземпляр Управляемого Redis (предварительная версия) Azure, войдите в портал Azure и выберите "Создать ресурс".
На странице Создание выберите Базы данных, а затем Кэш Azure для Redis.
На странице Новый кэш Redis настройте параметры для нового кэша.
Параметр Выберите значение Description Подписка Раскройте список и выберите нужную подписку. Подписка, в которой создается новый экземпляр Управляемого Redis Azure. Группа ресурсов Раскройте список и выберите группу ресурсов или нажмите Создать и введите имя для новой группы ресурсов. Имя группы ресурсов, в которой будут созданы кэш и другие ресурсы. Поместив все ресурсы приложения в одну группу ресурсов, вы сможете легко управлять ими и/или удалить их вместе. DNS-имя Введите уникальное в пределах региона имя. Имя кэша должно быть строкой от 1 до 63 символов при сочетании с именем региона кэша, содержащим только цифры, буквы или дефисы. (Если имя кэша меньше 45 символов, оно должно работать во всех доступных регионах.) Имя должно начинаться и заканчиваться числом или буквой и не может содержать последовательные дефисы. Имя \<DNS name\>.\<Azure region\>.redis.azure.net
узла экземпляра кэша .Местонахождение Откройте список и выберите расположение. Управляемый Redis azure доступен в выбранных регионах Azure. Тип кэша В раскрывающемся списке выберите уровень производительности и размер кэша. Уровень определяет производительность экземпляра Redis, а размер кэша определяет память, доступную для хранения данных. Рекомендации по выбору правильного уровня производительности см. в разделе Chosing правильного уровня Нажмите кнопку "Далее" и выберите общедоступную или частную конечную точку.
Нажмите кнопку Далее: Дополнительно. Здесь можно настроить любые модули Redis для добавления в экземпляр.
Задайте для политики кластеризации значение Enterprise для некластеризованного кэша или в OSS для кластеризованного кэша. Дополнительные сведения о выборе политики кластеризации см. в статье "Политика кластера".
Если вы используете активную георепликацию, ее необходимо настроить во время создания. Инструкции по этой настройке см. в разделе "Настройка активной георепликации для экземпляров Управляемого Redis Azure".
Внимание
После создания не удается изменить политику кластеризации экземпляра Управляемого Redis (предварительная версия) Azure. Если вы используете RediSearch, требуется политика кластера Enterprise и
NoEviction
является единственной поддерживаемой политикой вытеснения.Внимание
Если вы используете этот экземпляр кэша в группе георепликации, политики вытеснения нельзя изменить после создания экземпляра. Перед созданием кэша необходимо знать политики вытеснения основных узлов. Дополнительные сведения о активной георепликации см. в разделе "Предварительные требования для активной георепликации".
Внимание
После создания экземпляра кэша нельзя изменять модули. Модули должны быть включены во время создания экземпляра Кэш Azure для Redis. После создания кэша невозможно включить настройку модуля.
Нажмите кнопку "Далее": теги и пропуск.
По завершении выберите Next: Отзыв и создание.
Проверьте параметры и выберите Создать.
Создание экземпляра Redis займет несколько минут. Ход выполнения можно отслеживать на странице обзора Управляемого Redis в Azure. Когда Состояние примет значение Running (Выполняется), кэш будет готов к использованию.
Создание экземпляра кэша Azure для Redis
Чтобы создать кэш, войдите в портал Azure. В меню портала выберите "Создать ресурс".
В области "Начало работы" введите Кэш Azure для Redis в строке поиска. В результатах поиска найдите Кэш Azure для Redis и нажмите кнопку "Создать".
На панели "Новый кэш Redis" на вкладке "Основы" настройте следующие параметры для кэша:
Параметр Действие Description Подписка Выберите свою подписку Azure. Подписка, используемая для создания нового экземпляра Кэш Azure для Redis. Группа ресурсов Выберите группу ресурсов или щелкните Создать и введите новое имя группы ресурсов. Имя группы ресурсов, в которой создается кэш и другие ресурсы. Поместив все ресурсы приложения в одну группу ресурсов, вы сможете легко управлять ими и/или удалить их вместе. DNS-имя Введите уникальное имя. Имя кэша должно быть строкой от 1 до 63 символов, содержащих только цифры, буквы и дефисы. Имя должно начинаться и заканчиваться цифрой или буквой и не может содержать более одного дефиса подряд. Имя \<DNS name>.redis.cache.windows.net
узла экземпляра кэша .Местонахождение Выберите расположение. Регион Azure, расположенный рядом с другими службами, используюющими кэш. Номер SKU кэша Выберите номер SKU. Номер SKU определяет размер, производительность и параметры компонентов, доступные для кэша. Дополнительные сведения см. в статье Общие сведения о Кэше Azure для Redis. Объем кэша Выберите размер кэша. Дополнительные сведения см. в статье Общие сведения о Кэше Azure для Redis. Перейдите на вкладку "Сеть" или нажмите кнопку "Далее: сеть".
На вкладке "Сеть" выберите метод подключения, используемый для кэша.
Выберите вкладку "Дополнительно" или нажмите кнопку "Далее".
На панели "Дополнительно" проверьте или выберите метод проверки подлинности на основе следующих сведений:
- По умолчанию для нового кэша "Базовый", "Стандартный" или "Премиум" включена проверка подлинности Microsoft Entra Authentication, а проверка подлинности ключей доступа отключена.
- Для кэшей "Базовый" или "Стандартный" можно выбрать выбранный порт, отличный от TLS.
- Для кэшей уровня "Стандартный" и "Премиум" можно включить зоны доступности. После создания кэша невозможно отключить зоны доступности.
- Для кэша Premium настройте параметры для порта, не относяющегося к TLS, кластеризации, управляемому удостоверению и сохраняемости данных.
Внимание
Для оптимальной безопасности рекомендуется использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к кэшу, если это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации ключа общего доступа. Дополнительные сведения об использовании управляемых удостоверений с кэшем см. в разделе "Использование идентификатора Microsoft Entra для проверки подлинности кэша".
(Необязательно) Выберите вкладку "Теги" или нажмите кнопку "Далее: теги".
(Необязательно) На вкладке "Теги" введите имя и значение тега, если вы хотите классифицировать ресурс кэша.
Нажмите кнопку Просмотреть и создать.
На вкладке "Проверка и создание " Azure автоматически проверяет конфигурацию.
Когда отобразится сообщение Проверка пройдена зеленого цвета, выберите Создать.
Развертывание нового кэша происходит в течение нескольких минут. Ход развертывания можно отслеживать на панели обзора Кэш Azure для Redis. Когда отображается состояние выполнения, кэш готов к использованию.
Установка библиотеки redis-py
Redis-py — это интерфейс Python для Redis. Используйте средство пакетов Python, pip
чтобы установить redis-py
пакет из командной строки.
Следующий пример, используемый pip3
для установки redis-py
Python 3 в Windows 11 из командной строки администратора.
Создание скрипта Python для доступа к кэшу
Создайте скрипт Python, в который используется идентификатор Microsoft Entra или ключи доступа для подключения к экземпляру Управляемого Redis (предварительная версия) Azure. Мы рекомендуем использовать идентификатор Microsoft Entra.
- Проверка подлинности идентификатора Microsoft Entra (рекомендуется)
- Проверка подлинности ключа доступа
Включение проверки подлинности идентификатора Microsoft Entra в кэше
Если у вас есть кэш, проверьте, включена ли проверка подлинности Microsoft Entra. Если нет, включите его. Мы рекомендуем использовать идентификатор Microsoft Entra для приложений.
В портал Azure выберите экземпляр Кэш Azure для Redis, где вы хотите использовать проверку подлинности на основе токена Microsoft Entra.
Выберите проверку подлинности в меню "Ресурс".
Проверьте, установлен ли флажок включить проверку подлинности Microsoft Entra. В этом случае можно двигаться дальше.
Выберите "Включить проверку подлинности Microsoft Entra" и введите имя допустимого пользователя. По умолчанию при нажатии кнопки "Сохранить" пользователь, который вы вводите, автоматически назначается политика доступа владельца данных. Вы также можете ввести управляемое удостоверение или субъект-службу для подключения к экземпляру кэша.
Всплывающее диалоговое окно отображает запрос на обновление конфигурации и информирование о том, что требуется несколько минут. Выберите Да.
Внимание
После завершения операции включения узлы в экземпляре кэша перезагружается для загрузки новой конфигурации. Мы рекомендуем выполнить эту операцию во время периода обслуживания или за пределами пиковых рабочих часов. Операция может занять до 30 минут.
Сведения об использовании идентификатора Microsoft Entra с Azure CLI см. на страницах ссылок для удостоверений.
Установка библиотеки проверки подлинности Майкрософт
Установите библиотеку проверки подлинности Майкрософт (MSAL). Эта библиотека позволяет получать маркеры безопасности от удостоверений Майкрософт для проверки подлинности пользователей.
Вы можете использовать клиентную библиотеку удостоверений Python Azure, которая использует MSAL для предоставления поддержки проверки подлинности маркеров. Установите эту библиотеку с помощью
pip
:
pip install azure-identity
Создание скрипта Python с помощью идентификатора Microsoft Entra
Создайте текстовый файл, добавьте следующий скрипт и сохраните файл как
PythonApplication1.py
.Замените
<Your Host Name>
значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму<DNS name>.<region>.redis.azure.net
.Замените
<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()
Перед запуском кода Python из терминала убедитесь, что вы авторизуете терминал для использования идентификатора Microsoft Entra.
azd auth login
Запустите
PythonApplication1.py
с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.
Создание скрипта Python с помощью повторной проверки подлинности
Маркеры доступа к идентификатору Microsoft Entra имеют ограниченные сроки существования, в среднем 75 минут. Чтобы сохранить подключение к кэшу, необходимо обновить маркер. В этом примере показано, как это сделать с помощью Python.
Создайте текстовый файл, добавьте следующий скрипт. Затем сохраните файл как
PythonApplication2.py
.Замените
<Your Host Name>
значением экземпляра Управляемого Redis (предварительная версия) Azure. Имя узла имеет форму<DNS name>.<region>.redis.azure.net
.Замените
<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()
Запустите
PythonApplication2.py
с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.В отличие от первого примера, если срок действия маркера истекает, этот пример автоматически обновляет его.
Создание скрипта Python для доступа к кэшу
Создайте скрипт Python, в который используется идентификатор Microsoft Entra или ключи доступа для подключения к экземпляру Redis. Мы рекомендуем использовать идентификатор Microsoft Entra.
- Проверка подлинности идентификатора Microsoft Entra (рекомендуется)
- Проверка подлинности ключа доступа
Включение проверки подлинности идентификатора Microsoft Entra в кэше
Если у вас есть кэш, проверьте, включена ли проверка подлинности Microsoft Entra. Если нет, включите его. Мы рекомендуем использовать идентификатор Microsoft Entra для приложений.
В портал Azure выберите экземпляр Кэш Azure для Redis, где вы хотите использовать проверку подлинности на основе токена Microsoft Entra.
Выберите проверку подлинности в меню "Ресурс".
Проверьте, установлен ли флажок включить проверку подлинности Microsoft Entra. В этом случае можно двигаться дальше.
Выберите "Включить проверку подлинности Microsoft Entra" и введите имя допустимого пользователя. По умолчанию при нажатии кнопки "Сохранить" пользователь, который вы вводите, автоматически назначается политика доступа владельца данных. Вы также можете ввести управляемое удостоверение или субъект-службу для подключения к экземпляру кэша.
Всплывающее диалоговое окно отображает запрос на обновление конфигурации и информирование о том, что требуется несколько минут. Выберите Да.
Внимание
После завершения операции включения узлы в экземпляре кэша перезагружается для загрузки новой конфигурации. Мы рекомендуем выполнить эту операцию во время периода обслуживания или за пределами пиковых рабочих часов. Операция может занять до 30 минут.
Сведения об использовании идентификатора Microsoft Entra с Azure CLI см. на страницах ссылок для удостоверений.
Установка библиотеки проверки подлинности Майкрософт
Установите библиотеку проверки подлинности Майкрософт (MSAL). Эта библиотека позволяет получать маркеры безопасности от удостоверений Майкрософт для проверки подлинности пользователей.
Вы можете использовать клиентную библиотеку удостоверений Python Azure, которая использует MSAL для предоставления поддержки проверки подлинности маркеров. Установите эту библиотеку с помощью
pip
:
pip install azure-identity
Создание скрипта Python с помощью идентификатора Microsoft Entra
Создайте текстовый файл, добавьте следующий скрипт и сохраните файл как
PythonApplication1.py
.Замените
<Your Host Name>
значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму<DNS name>.redis.cache.windows.net
.Замените
<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()
Перед запуском кода Python из терминала убедитесь, что вы авторизуете терминал для использования идентификатора Microsoft Entra.
azd auth login
Запустите
PythonApplication1.py
с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.
Создание скрипта Python с помощью повторной проверки подлинности
Маркеры доступа к идентификатору Microsoft Entra имеют ограниченные сроки существования, в среднем 75 минут. Чтобы сохранить подключение к кэшу, необходимо обновить маркер. В этом примере показано, как это сделать с помощью Python.
Создайте текстовый файл, добавьте следующий скрипт. Затем сохраните файл как
PythonApplication2.py
.Замените
<Your Host Name>
значением из экземпляра Кэш Azure для Redis. Имя узла имеет форму<DNS name>.redis.cache.windows.net
.Замените
<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()
Запустите
PythonApplication2.py
с помощью Python. Вы должны увидеть результаты, как на снимке экрана ниже.В отличие от первого примера, если срок действия маркера истекает, этот пример автоматически обновляет его.
Очистка ресурсов
Если вы хотите продолжить использовать ресурсы, созданные в этой статье, сохраните группу ресурсов.
В противном случае, если вы закончите работу с ресурсами, можно удалить созданную группу ресурсов Azure, чтобы избежать расходов.
Внимание
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы. Если вы создали ресурсы внутри существующей группы ресурсов, содержащей ресурсы, которые необходимо сохранить, можно удалить каждый ресурс по отдельности, а не удалить группу ресурсов.
Удаление группы ресурсов
Войдите на портал Azure и щелкните Группы ресурсов.
Выберите группу ресурсов, которую нужно удалить.
Если существует множество групп ресурсов, используйте фильтр для любого поля... введите имя группы ресурсов, созданной для этой статьи. Выберите группу ресурсов в списке результатов.
Выберите команду Удалить группу ресурсов.
Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и щелкните Удалить.
Через некоторое время группа ресурсов и все ее ресурсы будут удалены.