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