Какова лучшая стратегия жизни объекта для Redis в веб-приложении? - PullRequest
5 голосов
/ 12 мая 2011
  • Я планирую использовать Redis (ServiceStack) в качестве всей базы данных для веб-приложения.
  • Я могу вставить 76000 записей за 7,4 секунды.
  • Но при использовании одного соединения (время жизни объекта RedisClient - приложение),
  • Я использовал метод Set generic, а не Store (огромная разница в производительности)

Я использовал время жизни объекта для запроса для Entity Framework ObjectContext.

Итак, какова лучшая стратегия для времени жизни объекта в веб-приложении (Asp.Net MVC) для Redis (ServiceStack) ..

Или Redis не является зрелым проектом для 100 Sql Server Tables (связанных друг с другом по-разному)

Я полностью сбит с толку ... Я думаю сохранить сущности в DB4O (я боюсь, лозунг 'DB4o - это Embedded-Java Db'), отношения в Redis?!

И для поддержки включения концепции в EF4.

Мой общий проект будет иметь 1.000.000 организаций, 100.000.000 отношений! (У меня 3 года Entity Framework 1-4 опыта)

Ответы [ 2 ]

4 голосов
/ 12 мая 2011

Вы не хотите использовать один объект клиента redis для всего - это дает действительно интересные результаты, если у вас одновременно загружается более одной страницы.Вы можете использовать какой-либо пул соединений, если возникают проблемы при создании соединений, но, вероятно, в этом нет необходимости.

Хранение и связанные с ним методы являются частью ServiceStack, разработанной для упрощения определенных простых сценариев с помощьюхранение информации о типе, а также фактических данных - если это не то, что вам нужно, не используйте его.

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

3 голосов
/ 19 мая 2011

Клиент ServiceStack Redis включает 2 диспетчера многопоточных соединений:

  • PooledRedisClientManager - реализация пула соединений, в которой RedisClient объединяются. Рекомендуется при удаленном доступе к redis-серверу.

  • BasicRedisClientManager - каждый раз возвращает новый экземпляр RedisClient, рекомендуется, если redis-сервер находится на том же сервере, что и ваше веб-приложение ASP.NET.

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

Вам также следует проверить Разработка простого блогового приложения с Redis .

В противном случае ServiceStack C # RedisClient wiki - лучшее место для документации по использованию C # Redis Client.

...