Хочу хорошее решение для кэширования памяти + диска
В настоящее время я храню сгенерированные HTML-страницы в кэше памяти в памяти. Это прекрасно работает, однако я хочу увеличить емкость кеша за пределы доступной памяти. То, что я действительно хотел бы, это:
- семантика memcached (т.е. не надежная, просто кеш)
- memcached api предпочтительно (но не обязательно)
- большой кэш первого уровня в памяти (MRU)
- огромный кэш второго уровня на диске (основной)
- изгнан из дискового кэша на максимальном уровне хранения с использованием LRU или LFU
- проверенная реализация
В поисках решения я нашел следующие решения, но все они каким-то образом не попадают в мои оценки. Кто-нибудь знает либо:
- другие варианты, которые я не рассматривал
- способ заставить memcachedb делать выселения
Уже учтены:
- лучше всего подходит, но не делает выселения: явно "не кеш"
- не вижу способа выселения (ручного или автоматического)
- заброшенный, без поддержки
- не хочу рекомендовать его клиентам
- не использует memcache api
- новый и недоказанный
- не хочу рекомендовать его клиентам
3 ответа
Кажется, что более поздние версии memcachedb могут быть очищены вручную, если необходимо, используя команду rget и сохраняя время истечения в записи данных. Конечно, это означает, что я обрабатываю и сервер, и сеть запросами на весь блок данных, хотя мне нужно только время истечения. Не лучшее решение, но, похоже, единственное доступное в настоящее время.
Я работал с EhCache, и он работает очень хорошо. Он имеет в кэш-памяти и на диске с различными политиками вытеснения. Это зрелая библиотека с хорошей поддержкой. Существует memcached API, который оборачивает EhCache, специально разработанный для поддержки GAE.
С уважением, Джонатан.