Никогда раньше не пользовался таким кешем. Проблема в том, что я хочу загрузить более 500 000 записей из базы данных и быстро выбрать/фильтровать.
Я думаю об использовании кеша и предварительно нашел EHCache и OSCache, есть мнения?
Никогда раньше не пользовался таким кешем. Проблема в том, что я хочу загрузить более 500 000 записей из базы данных и быстро выбрать/фильтровать.
Я думаю об использовании кеша и предварительно нашел EHCache и OSCache, есть мнения?
Они оба довольно солидные проекты. Если у вас есть довольно простые потребности в кэшировании, любой из них, вероятно, будет работать так же хорошо, как и другой.
Вы также можете рассмотреть возможность фильтрации в запросе к базе данных, если это возможно. Часто использование настроенного запроса, который возвращает меньший набор результатов, дает более высокую производительность, чем загрузка 500 000 строк в память и их последующая фильтрация.
Судя по их странице релизов, OSCache активно не поддерживается с 2007 года. хорошая вещь. EhCache, с другой стороны, находится в постоянном развитии. Только по этой причине я бы выбрал EhCache.
Редактировать Ноябрь 2013: OSCache, как и остальная часть OpenSymphony, мертв.
Я использовал JCS (http://jakarta.apache.org/jcs/), и кажется надежный и простой в использовании программно.
Это как бы зависит от ваших потребностей. Если вы выполняете работу в памяти на одной машине, то ehcache будет работать отлично, при условии, что у вас достаточно оперативной памяти или достаточно быстрый жесткий диск, чтобы переполнение не вызывало подкачки/перегрузки диска. если вы обнаружите, что вам необходимо достичь масштабируемости, даже несмотря на то, что эта конкретная операция выполняется часто, то вы, вероятно, захотите выполнить кластеризацию. JGroups/TreeCache от JBoss поддерживает это, как и EHcache (я думаю), и я знаю, что это определенно работает, если вы используете Ehcache с терракотой, что является очень удобной интеграцией. Этот ответ не говорит напрямую о достоинствах EHcache и OSCache, поэтому вот этот ответ: EHcache, кажется, имеет наибольшую инерцию (раньше это была общеизвестная активная разработка по умолчанию, включая новый сервер кэширования), и OSCache казался (по крайней мере, в какой-то момент), чтобы иметь немного больше функций, но я думаю, что с вариантами, упомянутыми выше, эти преимущества спорны / заменены. Ах, еще одна вещь, которую я забыл упомянуть, это то, что транзакционность данных важна, и ваши требования уточнят список допустимых вариантов.
Выберите кеш, соответствующий JSR 107, который облегчит вашу работу, когда вы захотите перейти с одной реализации на другую. Чтобы уточнить этот вопрос, выберите Ehcache, который является более популярным и широко используемым решением для кэширования Java. Мы широко используем Ehcache, и он нам подходит.
В других ответах обсуждаются плюсы и минусы кэшей; но мне интересно, действительно ли вы вообще пользуетесь кешем. Не совсем ясно, что именно вы планируете здесь делать и почему кеш будет полезен: если у вас есть набор данных, который вы используете, просто получите к нему доступ. Кэш только помогает повторно использовать вещи между независимыми задачами. Если это то, что вы делаете, да, кэширование может помочь. Но если это большая задача, которая может нести набор данных, кэширование не принесет никакой пользы.
В любом случае, я рекомендую использовать их с модулями Spring. Кэш может быть прозрачным для приложения, а реализации кеша легко поменять местами. Помимо OSCache и EHCache, модули Spring также поддерживают кеш Gigaspaces и JBoss.
Что касается сравнения.... OSCache проще настроить EHCache имеет больше параметров настройки
Оба они надежны, оба поддерживают зеркалирование кэша, оба работают с Terracotta, оба поддерживают кэширование в памяти и на диске.
Я использовал oscache в нескольких весенних проектах с весенними модулями, используя конфигурацию на основе aop.
Недавно я попытался использовать модули oscache + spring в проекте Spring 3.x, но обнаружил, что кеширование на основе аннотаций spring-modules не поддерживается (даже форком).
Я недавно узнал об этом проекте -
http://code.google.com/p/ehcache-spring-annotations/< /а>
Что поддерживает Spring 3.x с декларативным кэшированием на основе аннотаций с использованием ehcache.
В основном я использую EhCache, потому что раньше он был поставщиком кеша по умолчанию для Hibernate. Список решений для кэширования есть на Java-Source.net.
Раньше у меня была ссылка, в которой сравнивались основные решения для кэширования. Если я найду его, я обновлю этот ответ.
OSCache практически мертв, поскольку несколько лет назад от него отказались. Вы можете взглянуть на Cacheonix, он активно развивается, и мы только что выпустили версию 2.2.2 с поддержкой кэширования на веб-уровне. Я коммиттер, так что вы можете связаться, если у вас есть какие-либо вопросы.