2014-10-28 7 views
1

Мы реализуем StackExchange.Redis для хранения всей информации о трех сайтах электронной коммерции (около 18 500 продуктов). Информация хранится в базе данных SQL Server, отображаются на пользовательские объекты, а затем добавляют в Azure Redis кэш с помощью этого ключа именования:Хранение пользовательских. Net объектов в кэше Azure Redis с помощью StackExchange.Redis

urn:products:{0}:{1} 

(где 0 является магазин идентификатор и 1 это идентификатор продукта). Я прочитал Where are KEYS, SCAN, FLUSHDB etc? и смог получить ключи, соответствующие шаблону urn:products:{0}. Проблема, с которой мы сталкиваемся, заключается в том, что наш проект включает в себя много GetAllProducts List <Products>, GetAllCategories List <Categories>, а затем используется функциями LINQ.

Исходя из этого:

  • Я пытался хранить все продукты (список пользовательских объектов) в одном ключе (urn:products:all), но этот подход генерируется таймаут в Azure Redis Cache. Является ли этот метод предложенным? Или предпочтительнее хранить каждый продукт в отдельных ключах?
  • Я не думаю, что это правильно, чтобы закодировать каждый из ключей, чтобы получить каждое значение. Можно ли получить набор ключей/значений по шаблону?
  • Я также читаю HASHES, однако я не думаю, что они помогают в нашем требовании.
+0

Вы не можете @ людей в вопросах. –

+0

Когда вы спросите, так это нормально Это звучит так, как ответы на основе мнения будут даны так непригодными для SO – ZoomVirus

+0

Удалено @ в вопросе (не знал этого). Изменился первый вопрос, чтобы избежать ответов на основе мнения. – arielbvargas

ответ

1

Мне интересно, как вы подходите для вызова тонн записей сразу. Я рекомендую нарезать их не более тысячи записей.

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

В вашем случае, Redis Set является лучшим подходом объединить или вычесть с заданными условиями или Hash для недвижимости на основе объекта хранения. Какой бы подход вы ни выбрали, вы будете использовать два или более типов данных, потому что типы данных Redis не столь универсальны.

RedisCookbook описывает хороший пример.