Введение
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. Удобно использовать поставщик, если Вам не нужно делать изменений в любом коде.
Вы можете отключить 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 напрямую через код. Вот документы для .NET, Node.js, Java и Python на Azure. Это удивительный проект, и обладать им, полностью управляемым, в качестве услуги приятно. С сайта Azure Redis:
- Redis является расширенным хранилищем значений ключей, которые могут содержать такие структуры данных, как строки, хэши, списки, наборы и сортированные наборы. Redis поддерживает набор атомарных операций с этими типами данных.
- Redis также поддерживает в установке репликацию «master-slave» с очень быстрой первой синхронизацией без блокирования, автоматическим переподключением при разделении сети и так далее.
- Другие особенности включают транзакции, публикации/подписки, сценарии Lua, ключи с ограниченным временем действия и параметры конфигурации, что позволяют Redis действовать как кэш.
- Вы можете использовать Redis с помощью большинства теперешних языков программирования.
- Кэш Redis для Azure использует идентификацию Redis, а также поддерживает SSL-подключения к Redis.
Возможно, Вы заинтересованы в Redis, но не хотите запускать его на Azure или, возможно, даже на Linux. Возможно запустить Redis с помощью Redis MSOpenTech на ОС Windows. Его можно установить с NuGet, Chocolatey или загрузить напрямую с репозитория проектов 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
Статьи по схожей тематике