Подтвердить что ты не робот

Как использовать Redis в качестве кеша для SQL Server?

У меня есть некоторые табличные данные, которые из-за несвязанных проблем слишком медленны, чтобы выйти из SQL Server в реальном времени. Поскольку мы получаем больше пользователей, это только ухудшится, поэтому я думаю об использовании Redis в качестве интерфейсного кеша для хранения табличных данных для таблиц пользователей.

Эти данные могут стать устаревшими примерно через 10 минут, после чего я хотел бы снова получить набор записей и ввести его в Redis.

Приложение представляет собой приложение .NET MVC. Я думал, что когда пользователь входит в приложение, эти данные извлекаются из базы данных (занимает около 10 секунд) и помещаются в Redis, готовые к употреблению клиентом MVC. Я по истечении срока действия на эти данные, а затем, когда он станет устаревшим, он будет извлечен из базы данных SQL Server.

Все это звучит разумно? Я немного боюсь, что:

  • Пользователь может перейти на страницу до того, как данные будут в Redis
  • Если Redis не работает или не отвечает, мне нужно убедиться, что ViewModel может быть заполнен непосредственно из SQL SErver без наличия Redis
4b9b3361

Ответ 1

Я пойду на реализацию redis для Service stack, здесь - все необходимые детали. Redis особенно хорош при выполнении кэширования по сравнению с другими nosql. Но если у вас есть приложение для чтения и записи, я буду настаивать на том, чтобы проверить базу данных nosql как базу данных в сочетании с SQL-сервером. Это поможет в случае масштабируемости.

Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация. Вам просто нужно запустить команду nuget, и вы почти готовы к работе.

Ответ 2

Вы можете использовать что-то вроде MemcacheD для хранения кэшированных страниц в памяти.

Вы можете установить срок действия кэшированного объекта на 10 минут. После этого кеш автоматически удалит объект.

Ваш фактический репозиторий должен будет выполнить следующие действия:
1. Проверьте кеш для данных, которые вы хотите, если они есть, отлично их использовать
2. Если кешированные данные не существуют, перейдите на SQL-сервер, чтобы получить его
3. Обновите кеш с данными, возвращаемыми с сервера SQL

Раньше я использовал клиента Enyim. Он отлично работает. https://github.com/enyim/EnyimMemcached

Я мог бы также использовать что-то вроде Quartz для планирования фоновой задачи для заполнения кеша. http://quartznet.sourceforge.net/