Кэш 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 в разделе Подключение к кэшу с повторным отключением.
  • Задайте в свойстве ConnectionMultiplexer.ClientName уникальное имя экземпляра приложения в целях диагностики.
  • Используйте несколько экземпляров ConnectionMultiplexer для пользовательских рабочих нагрузок.
    • Вы можете следовать этой модели, если в приложении имеется меняющаяся нагрузка. Например:
    • можно иметь один мультиплексор для работы с большими ключами;
    • можно иметь один мультиплексор для работы с небольшими ключами;
    • можно задать разные значения времени ожидания подключения и логики повторов для каждого используемого ConnectionMultiplexer.
    • Установите свойство ClientName в каждом мультиплексоре для облегчения диагностики.
    • Это руководство может привести к более упрощенной задержке на каждый ConnectionMultiplexer.

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

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

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

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

  • Чтобы получить ключи доступа, выберите "Проверка подлинности " в меню "Ресурс". Затем откройте вкладку "Ключи доступа".

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

  • Чтобы получить имя узла и порты для кэша, выберите "Обзор " в меню "Ресурс". Имя узла имеет вид <DNS-имя>.redis.cache.windows.net.

    Снимок экрана: свойства Кэш 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 и ее общие статьи в оглавлении.

Можно ли использовать кэш 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.