Я в процессе планирования перемещения веб-приложения C# ASP.Net на Azure (в настоящее время размещается на одном выделенном сервере), и я смотрю варианты кеширования. В настоящее время, поскольку у нас есть только один экземпляр приложения, запущенного за один раз, у нас есть кеш памяти «in process», чтобы освободить SQL DB от некоторых идентичных запросов.Стиль Azure Cache/DataCache Регионы в Redis
Процесс в настоящий момент состоит в том, чтобы очистить определенные части кеша, когда менеджеры/службы вносят изменения в эти части базы данных, например. у нас есть таблица пользователей, и у нас будут такие ключи, как «Пользователь. {0}», возвращающий одну пользовательскую запись/объект и «Users.ForeignKey. {0}», возвращающий всех пользователей, связанных с внешним ключом. Если мы обновим одну запись пользователя, мы удалим ключ «User.1» (если userid = 1) и упростим все коллекции списков, поскольку они могли быть изменены. Мы делаем это, удаляя ключи по шаблону, это означает, что удалены только затронутые ключи, а все остальные сохраняются.
Мы планируем этот переход к Azure некоторое время, и когда мы впервые посмотрели на все, что было недоступно, служба Azure Redis Cache недоступна, по крайней мере, поддерживается, поэтому мы рассмотрели сервис Azure Cache, основанный на AppFabric. Используя это, мы решили, что мы будем использовать области DataCache для разделения разных типов объектов, а затем просто очищаем затронутый регион, а не совсем точно, как наш текущий метод, но ОК. Теперь, поскольку Redis пришел на сцену, мы смотрели на это и предпочли бы использовать его, если это возможно. Тем не менее, похоже, что для достижения того же мы должны иметь отдельные тайники Redis для каждого раздела «Регион», который, как я понимаю, будет означать, что мы заплатим за множество небольших экземпляров службы Redis Cache от Azure, которые будет стоить довольно много, учитывая, что в кеш нам понадобится 10 + отдельно скрываемых разделов.
Кто-нибудь знает, как достичь чего-то похожего на Azure DataCache Regions с Redis, или вы можете предложить что-то очевидное, что я, вероятно, отсутствует.
Извините за такой длинный вопрос/объяснение, но мне было трудно объяснить, чего я пытаюсь достичь без фона/контекста.
Спасибо, Гарет
Update:
Я нашел несколько Баш команд, которые могут сделать работу удаления ключей по шаблону, в том числе с помощью команды «клавиши» here и Lua команда сценария EVAL here.
Я планирую использовать клиент StackExchange.Redis для взаимодействия, знает ли кто-нибудь, как использовать эти типы команд или альтернативы этим (удалять ключи по шаблону) при использовании StackExchange.Redis?
Спасибо за чтение, Гареты
Хорошо, спасибо за ваш ответ, я посмотрю на него. –