Использование Redis как сервиса в Azure для ускорения работы ASP.NET приложений - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию

    Выбери свою IT специальность

    Начать бесплатно

    Выбери свою IT специальность

    Начать бесплатно

      Использование Redis как сервиса в Azure для ускорения работы ASP.NET приложений

      Введение

      Microsoft Azure использует кэш Redis в качестве сервиса. В нем существуют два уровня. Уровень Basic является одним узлом кеша, а Standard – полностью воспроизведенным кэшем (два узла с автоматической отработкой отказа). Microsoft управляет автоматической репликацией между двумя узлами и предлагает высокую доступность SLA (Service Level Agreement). 


      Уровень Premium может использовать до половины терабайта оперативной памяти, десятки тысяч подключений клиентов и группироваться или масштабироваться в большие блоки. Разумеется, Вы можете управлять своим Redis через виртуальную машину, но существует SAAS (Software as a Service/программное обеспечение как сервис), который все значительно упрощает – достаточно просто использовать его и остальное будет обработано.

      Мы испробуем Redis в качестве кэша для ASP.NET веб-приложений. В нем есть интересный Redis Desktop Manager с открытым исходным кодом. Еще один интересный графический интерфейс для Redis - это Redsmin.

      Для небольших приложений и сайтов мы можем сделать простой (Basic) кэш и получить 250 мегабайт. Мы сделали экземпляр объекта Redis в Azure. Его создание занимает пару минут. С ним можно взаимодействовать программно с помощью StackExchange.Redis, ServiceStack.Redis или любой из многих других больших пользовательских библиотек.

      Впрочем, сейчас существует мощная поддержка для Redis и кеширования в ASP.NET. Это библиотека под названием Microsoft.Web.RedisSessionStateProvider, которую можно получить из NuGet:

      Install-Package Microsoft.Web.RedisSessionStateProvider

      Она использует в себе библиотеку StackExchange, но это позволяет ASP.NET использовать объект Session и сохранять результаты в Redis, а не в памяти веб-сервера. Добавьте это к Вашей веб-конфигурации web.config:

      mode="Custom" customProvider="FooFoo">

                

                 name="MySessionStateStore"

                  type="Microsoft.Web.Redis.RedisSessionStateProvider"

                  host="hanselcache.redis.cache.windows.net"

                  accessKey="THEKEY"

                  ssl="true"

                  port="1234" />

          

      Вот строка из сессии ASP.NET, сохраненная в Redis, как показано диспетчером Redis Desktop Manager. Удобно использовать поставщик, если Вам не нужно делать изменений в любом коде.

      Диспетчер Redis Desktop Manager

      Вы можете отключить SSL и подключиться к кэшу Azure Redis Cache через открытый доступ в Интернет, но вам действительно лучше использовать SSL. Вот инструкции по использованию диспетчера Redis Desktop Manager с SSL и Azure Redis. Обратите внимание на часть, где Вам понадобится файл с .pem расширением, который является открытым SSL-ключом для Azure Redis Cache. Вы можете получить этот ключ SSL здесь (на момент написания этой статьи).

      Redis можно использовать не только в качестве состояния сессии, но и как молниеносный вывод кеша. Это означает кеширование HTTP-ответов в полном объеме. Его настройка в ASP.NET 4.x похожа на настройку провайдера состояния сессии (Session State Provider):

      Install-Package Microsoft.Web.RedisOutputCacheProvider

      Теперь, когда мы использовали атрибуты [OutputCache] в контроллерах MVC, или директивах OutputCache в веб-формах, как <%@ OutputCache Duration="60" VaryByParam="*" %>, ответы будут обработаны с помощью Redis. Только подумав о том, как работают Ваши строки запроса и URL-адреса, Вы можете быстро сделать приложение, как каталог продукции, например. И сделать это в 4-ре или 10 раз быстрее, используя кеширование. Это требует минимальных усилий, а результат приносит огромный. Странно, что даже в 2015 году некоторые люди обращаются к базе данных при каждом HTTP-запросе, когда теперешние нужды данных веб-приложений этого не требуют.

      Конечно, Вы можете работать с Redis напрямую через код. Вот документы для .NETNode.jsJava и Python на Azure. Это удивительный проект, и обладать им, полностью управляемым, в качестве услуги приятно. С сайта Azure Redis:

      • Redis является расширенным хранилищем значений ключей, которые могут содержать такие структуры данных, как строки, хэши, списки, наборы и сортированные наборы. Redis поддерживает набор атомарных операций с этими типами данных.
      • Redis также поддерживает в установке репликацию «master-slave» с очень быстрой первой синхронизацией без блокирования, автоматическим переподключением при разделении сети и так далее.
      • Другие особенности включают транзакции, публикации/подписки, сценарии Lua, ключи с ограниченным временем действия и параметры конфигурации, что позволяют Redis действовать как кэш.
      • Вы можете использовать Redis с помощью большинства теперешних языков программирования.
      • Кэш Redis для Azure использует идентификацию Redis, а также поддерживает SSL-подключения к Redis.

      Возможно, Вы заинтересованы в Redis, но не хотите запускать его на Azure или, возможно, даже на Linux. Возможно запустить Redis с помощью Redis MSOpenTech на ОС Windows. Его можно установить с NuGetChocolatey или загрузить напрямую с репозитория проектов GitHub. Если у Вас Redis для Windows (это легко с Chocolatey), можете использовать redis-cli.exe в командной строке для коммуникации с Azure Redis Cache.

      Запустить локальный сервер Redis легко: с помощью redis-server.exe проверить его в разработке, а затем изменить строку Redis-подключения Вашего приложения при развертывании на Azure. Можете проверить. В течение 30 минут Вы сможете настроить Ваше приложение, чтобы использовать кэш (Redis или другой) и увидеть некоторое, действительно, значительное ускорение.

      Источник: http://www.hanselman.com/blog/UsingRedisAsAServiceInAzureToSpeedUpASPNETApplications.aspx

      КОММЕНТАРИИ И ОБСУЖДЕНИЯ

      Пакеты подписки с доступом ко всем курсам и сервисам

      Стартовый
      • Все видеокурсы на 3 месяца
      • Тестирование по 10 курсам
      • Проверка 5 домашних заданий
      • Консультация с тренером 30 мин
      Базовый
      • Все видеокурсы на 6 месяцев
      • Тестирование по 16 курсам
      • Проверка 10 домашних заданий
      • Консультация с тренером 60 мин
      Премиум
      • Все видеокурсы на 1 год
      • Тестирование по 24 курсам
      • Проверка 20 домашних заданий
      • Консультация с тренером 120 мин
      new
      Премиум Plus
      • Все видеокурсы на 1 год
      • Тестирование по 24 курсам
      • Проверка 20 домашних заданий
      • Консультация с тренером 120 мин
      • Скачивание видео уроков
      Notification success
      Мы используем cookie-файлы, чтобы сделать взаимодействие с нашими веб-сайтами и услугами простым и значимым.