Как мне использовать Redis в качестве кеша для SQL Server? - PullRequest
14 голосов
/ 31 января 2012

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 09 января 2013

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

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

1 голос
/ 02 мая 2012

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...