Хочу хорошее решение для кэширования памяти + диска

В настоящее время я храню сгенерированные HTML-страницы в кэше памяти в памяти. Это прекрасно работает, однако я хочу увеличить емкость кеша за пределы доступной памяти. То, что я действительно хотел бы, это:

  1. семантика memcached (т.е. не надежная, просто кеш)
  2. memcached api предпочтительно (но не обязательно)
  3. большой кэш первого уровня в памяти (MRU)
  4. огромный кэш второго уровня на диске (основной)
  5. изгнан из дискового кэша на максимальном уровне хранения с использованием LRU или LFU
  6. проверенная реализация

В поисках решения я нашел следующие решения, но все они каким-то образом не попадают в мои оценки. Кто-нибудь знает либо:

  • другие варианты, которые я не рассматривал
  • способ заставить memcachedb делать выселения

Уже учтены:

http://memcachedb.org/

  • лучше всего подходит, но не делает выселения: явно "не кеш"
  • не вижу способа выселения (ручного или автоматического)

кэш тугелы

  • заброшенный, без поддержки
  • не хочу рекомендовать его клиентам

nmdb

  • не использует memcache api
  • новый и недоказанный
  • не хочу рекомендовать его клиентам

3 ответа

Решение

Кажется, что более поздние версии memcachedb могут быть очищены вручную, если необходимо, используя команду rget и сохраняя время истечения в записи данных. Конечно, это означает, что я обрабатываю и сервер, и сеть запросами на весь блок данных, хотя мне нужно только время истечения. Не лучшее решение, но, похоже, единственное доступное в настоящее время.

Я работал с EhCache, и он работает очень хорошо. Он имеет в кэш-памяти и на диске с различными политиками вытеснения. Это зрелая библиотека с хорошей поддержкой. Существует memcached API, который оборачивает EhCache, специально разработанный для поддержки GAE.

С уважением, Джонатан.

Другие вопросы по тегам