Кэш Redis для Azure: разработка — вопросы и ответы

В этой статье приведены ответы на распространенные вопросы о разработке кэша Redis для Azure.

Как мне начать работу с кэшем Azure для Redis?

Существует несколько способов приступить к работе с кэшем Azure для Redis.

Если у вас нет учетной записи Azure, то вы можете сделать следующее.

  • Открыть бесплатную учетную запись Azure. Вы получаете кредиты, которые можно использовать, чтобы попробовать платные службы Azure. После израсходования кредитов ваша учетная запись не исчезнет. Вы сможете использовать ее для работы с бесплатными службами и функциями Azure.
  • Активировать преимущества подписчика Visual Studio. Ваша подписка MSDN каждый месяц приносит вам кредиты, которые можно использовать для оплаты использования служб Azure.

Что делают параметры конфигурации StackExchange.Redis?

StackExchange.Redis имеет много параметров. В этом разделе рассказывается о некоторых распространенных параметрах. Более подробные сведения о параметрах StackExchange.Redis см. в статье StackExchange.Redis configuration (Конфигурация StackExchange.Redis).

Параметры конфигурации Description Рекомендация
AbortOnConnectFail Если задано значение true, соединение не будет восстанавливаться после сбоя сети. Установите значение false и позвольте StackExchange.Redis автоматически восстанавливать соединение.
ConnectRetry Количество повторных попыток подключения во время первоначального подключения. Руководствуйтесь следующими примечаниями.
ConnectTimeout Время ожидания в миллисекундах для операций подключения. Руководствуйтесь следующими примечаниями.

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

Повторы

  • Общая рекомендация для ConnectRetry и ConnectTimeout — завершение работы при первой ошибке и повторение попытки. Эта рекомендация основана на вашей рабочей нагрузке и на том, сколько времени в среднем занимает в вашем клиенте выдача команды Redis и получение ответа.
  • Вам не нужно проверять состояние и подключаться самостоятельно — StackExchange.Redis переподключается автоматически. Избегайте использования свойства ConnectionMultiplexer.IsConnected.
  • Снежный ком — иногда возникает проблема, при которой вы выполняете повторные попытки, а они накапливаются и не удаляются. При возникновении снежного кома следует использовать алгоритм экспоненциальной задержки повтора, как описано в общих рекомендациях по повторным попыткам, опубликованных группой Microsoft Patterns & Practices.

Значения времени ожидания

  • Исследуйте вашу рабочую нагрузку и установите соответствующие значения. Если вы храните большие значения, установите более высокое значение времени ожидания.

  • Установите для AbortOnConnectFail значение false и позвольте StackExchange.Redis восстанавливать подключение.

  • Используйте один экземпляр ConnectionMultiplexer с длительным сроком действия вместо создания нового подключения для каждого запроса. Пример управления подключением см RedisConnection . в разделе "Подключение к кэшу" с помощью RedisConnection.

  • Задайте в свойстве ConnectionMultiplexer.ClientName уникальное имя экземпляра приложения в целях диагностики.

  • Используйте несколько экземпляров ConnectionMultiplexer для пользовательских рабочих нагрузок.

    Вы можете следовать этой модели, если у вас есть различные нагрузки в приложении. Например:

    • можно иметь один мультиплексор для работы с большими ключами;
    • можно иметь один мультиплексор для работы с небольшими ключами;
    • Вы можете задать разные значения для времени ожидания подключения и логики повторных попыток для каждого ConnectionMultiplexer используемого.
    • Установите свойство ClientName в каждом мультиплексоре для облегчения диагностики.

    После выполнения этого руководства может привести к более упрощенной задержке на каждый ConnectionMultiplexer.

Каких клиентов кэша Azure для Redis я могу использовать?

Одним из основных преимуществ Redis является то, что существует множество клиентов, поддерживающих множество языков разработки. Текущий список клиентов Redis см. здесь. Руководства, охватывающие несколько разных языков и клиентов, см. в статье Использование Кэша Azure для Redis.

Получение имени узла, портов и ключа доступа

Чтобы подключиться к серверу Кэш Azure для Redis, клиент кэша должен иметь имя узла, порты и ключ доступа кэша. Некоторые клиенты могут ссылаться на эти элементы с помощью немного разных имен. Имя узла, порты и ключи можно получить в портал Azure.

  • Чтобы получить ключ доступа для кэша, выполните приведенные далее действия.

    1. В портал Azure перейдите в кэш.
    2. В меню службы в разделе "Параметры" выберите "Проверка подлинности".
    3. На панели проверки подлинности перейдите на вкладку "Ключи доступа".
    4. Чтобы скопировать значение ключа доступа, щелкните значок копирования в поле ключа.

    Снимок экрана: поиск и копирование ключа доступа для экземпляра Кэш Azure для Redis.

  • Чтобы получить имя узла и порты для кэша, выполните следующие действия.

    1. В портал Azure перейдите в кэш.
    2. В меню службы выберите "Обзор".
    3. В разделе Essentials для имени узла щелкните значок "Копировать", чтобы скопировать значение имени узла. Значение имени узла имеет форму <DNS name>.redis.cache.windows.net.
    4. Для портов щелкните значок копирования , чтобы скопировать значения портов.

    Снимок экрана: поиск и копирование имени узла и портов для экземпляра Кэш Azure для Redis.

Существует ли локальный эмулятор кэша Azure для Redis?

Локальный эмулятор Кэша Azure для Redis отсутствует. Однако вы можете запустить копию community Redis на локальном компьютере и подключиться к ней, чтобы получить аналогичный интерфейс с локальным эмулятором кэша, как показано в следующем примере:

private static Lazy<ConnectionMultiplexer>
    lazyConnection = new Lazy<ConnectionMultiplexer> (() =>
    {
        // Connect to a locally running instance of Redis to simulate
        // a local cache emulator experience.
        return ConnectionMultiplexer.Connect("127.0.0.1:6379");
    });

public static ConnectionMultiplexer Connection
{
    get
    {
        return lazyConnection.Value;
    }
}

Redis работает изначально в Linux, но вы также можете использовать подсистема Windows для Linux для запуска Redis на компьютере с Windows. Дополнительные сведения см. в разделе "Установка Redis" в Windows, чтобы при необходимости настроить файл redis.conf для более тесного сопоставления параметров кэша по умолчанию для веб-Кэш Azure для Redis.

Как выполнять команды Redis?

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

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

Также можно использовать программы командной строки Redis. Сведения об использовании см. в разделе "Использование программы командной строки Redis" с Кэш Azure для Redis

Почему в кэше Azure для Redis отсутствует ссылка на библиотеку классов MSDN?

Кэш Microsoft Azure для Redis основан на популярном продукте с открытым кодом — выполняющемся в памяти хранилище данных, Redis. Вы можете использовать широкий спектр клиентов Redis для многих языков программирования. Каждый клиент имеет собственный API, который вызывает экземпляр кэша Azure для Redis с помощью команд Redis.

Поскольку у каждого клиента свои особенности, вы не найдете единый централизованный справочник по классам в MSDN. У каждого клиента собственная справочная документация. Помимо справочной документации имеется несколько учебников, показывающих, как приступить к работе с Кэшем Azure для Redis, используя разные языки и клиенты кэша. Чтобы получить доступ к этим руководствам, см. в статью Краткое руководство. Использование кэша Azure для Redis с приложениями .NET. Похожие статьи вы найдете в таблице содержимого.

Можно ли использовать кэш Azure для Redis как кэш сеанса PHP?

Да. Для использования кэша Azure для Redis в качестве кэша сеанса PHP укажите строку подключения к экземпляру кэша Azure для Redis в пути session.save_path.

Внимание

При использовании кэша Azure для Redis в качестве кэша сеанса PHP необходимо кодировать в URL-адресе ключ безопасности, используемый для подключения к кэшу, как показано в следующем примере:

session.save_path = "tcp://mycache.redis.cache.windows.net:6379?auth=<url encoded primary or secondary key here>";

Если ключ не закодирован по URL-адресу, может появиться исключение, например: Failed to parse session.save_path

Дополнительные сведения об использовании кэша Azure для Redis в качестве кэша сеанса PHP с клиентом PhpRedis см. в разделе Обработчик сеанса PHP.

Что такое базы данных Redis?

Базы данных Redis — это просто логическое разделение данных внутри одного экземпляра Redis. Кэш-память совместно используется всеми базами данных, и фактический объем памяти, используемый определенной базой данных, зависит от пар "ключ-значение", хранящихся в ней. Например, объем кэша C6 составляет 53 ГБ, а P5 — 120 ГБ. Вы можете предоставить все 53 или 120 ГБ одной базе данных или разделить их между несколькими базами данных.

Примечание.

При использовании кэша Azure для Redis уровня "Премиум" с включенной кластеризацией доступна только база данных 0. Это ограничение является встроенным ограничением Redis и не зависит от Кэш Azure для Redis.

Узнайте о других часто задаваемых вопросах про кэш Redis для Azure.