2012-01-30 1 views
13

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

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

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

Все ли это разумно? Я немного испугался, что:

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

Виктория, вы можете найти [этот пост] (http://www.brentozar.com/archive/2011/11/how-stackoverflow-scales-sql-server-video/) интересный. Около минуты 15 он показывает возможный подход к интеграции Redis. – uvita

+0

спасибо, я посмотрю – Victoria

+1

@uvita вы можете добавить это как ответ, так как я хотел бы принять его - это идеальное решение, которое я искал – Victoria

ответ

1

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

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

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

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

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

+0

Мне нравится ваша идея Redis как кэш. Реализация Redis будет очень похожа на Memcached ... некоторые люди говорят, что это так же быстро или быстро, и у нее больше возможностей. Я просто не могу рекомендовать его, потому что я никогда не работал с ним вне некоторых демонстрационных приложений NodeJS –

3

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

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