Кэш 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 отсутствует. Вы можете запустить версию MSOpenTech для redis-server.exe из программ командной строки 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.conf для более точного соответствия параметрам кэша по умолчанию для подключенного к сети Кэша Azure для Redis.

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

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

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

Также можно использовать программы командной строки Redis. Чтобы использовать их, выполните приведенные ниже действия.

  1. Скачайте программы командной строки Redis.

  2. Подключитесь к кэшу с помощью redis-cli.exe.

  3. Передайте конечную точку кэша, используя параметр -h и ключ с параметром -a, как показано в следующем примере:

    redis-cli -h <Azure Cache for Redis name>.redis.cache.windows.net -a <key>

Примечание.

Средства командной строки Redis не работают с портом TLS, но вы можете использовать служебную программу, например stunnel для безопасного подключения средств к порту TLS, следуя указаниям в средстве командной строки 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.