Кэш объектов с неограниченным количеством ключей, но ограниченным количеством объектов - PullRequest
3 голосов
/ 28 февраля 2012

Я ищу библиотеку кеша объектов c #, которая может реализовывать следующие шаблоны:

  • кеш используется для кеширования объектов определенного типа T, имеющих первичный ключ.Пример: класс Person (с именем, фамилией и т. Д.) И ключом PersonId
  • , в кэше может храниться неограниченное количество ключей.Ключи имеют тип int или long.
  • кеш, однако, может хранить только ограниченное количество объектов типа T. T объекты занимают много памяти, и у меня не может быть много этих объектов вкэш за раз.
  • при переполнении кеш может сериализовать объекты в базу данных или файл и т. д. (быстрый носитель), но кеш все равно будет хранить ключи.

В основном мне нужно обработать больше объектов T, чем я могу хранить в памяти, и я хочу использовать кэш для их быстрого извлечения перед сохранением результатов в базу данных.

Итак, я подумал об использовании Прокси шаблон и иметь прокси-объекты хранилища кэша, которые могут получать / сериализовать мои реальные объекты.

Знаете ли вы какую-нибудь кеширующую библиотеку c #, которая может использоваться с этими шаблонами?Сам я ничего не смог найти.

Спасибо

1 Ответ

0 голосов
/ 21 марта 2012

То, что вы ищете, это база данных. Механизмы баз данных сделаны для разделения таблиц ключей и таблиц объектов. (Если вы не знакомы с этой концепцией, поищите в Интернете информацию об индексации базы данных, первичных ключах и т. Д.) Они также предназначены для хранения страниц таблиц ключей в ОЗУ и недавно использованных объектов в ОЗУ. На самом деле, многие механизмы баз данных позволяют вам настроить, сколько из каждого вы храните в оперативной памяти. Я думаю, что вы должны использовать Sqlite с легким ORM (например, Dapper или ServiceStack.OrmLite или один из множества других). Sqlite имеет параметр для отключения синхронизации диска и два других параметра для настройки объема данных в оперативной памяти. Смотрите информацию здесь: http://www.sqlite.org/pragma.html

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