OSCache против EHCache - PullRequest
       22

OSCache против EHCache

19 голосов
/ 19 сентября 2008

Никогда раньше не использовал такой кеш. Проблема в том, что я хочу загрузить более 500 000 записей из базы данных и быстро выполнить выбор / фильтрацию.

Я подумываю об использовании кеша и предварительно нашел EHCache и OSCache , есть какие-нибудь мнения?

Ответы [ 10 ]

53 голосов
/ 02 сентября 2009

Судя по странице релизов , OSCache активно не поддерживается с 2007 года. Это не очень хорошая вещь. EhCache, с другой стороны, находится в постоянном развитии. По этой причине я бы выбрал EhCache.

Редактировать ноябрь 2013: OSCache, как и все остальное в OpenSymphony, мертв.

19 голосов
/ 19 сентября 2008

Они оба довольно солидные проекты. Если у вас достаточно базовые потребности в кэшировании, то один из них, вероятно, будет работать так же хорошо, как и другой.

Вы также можете рассмотреть возможность фильтрации в запросе к базе данных, если это возможно. Часто использование настроенного запроса, который возвращает меньший набор результатов, даст вам лучшую производительность, чем загрузка 500 000 строк в память и последующая их фильтрация.

6 голосов
/ 19 сентября 2008

Я использовал JCS (http://jakarta.apache.org/jcs/), и он кажется надежным и простым в использовании программно.

5 голосов
/ 19 мая 2016

Выберите кеш, соответствующий JSR 107, который облегчит вашу работу, когда вы захотите перейти с одной реализации на другую. Чтобы быть более конкретным в этом вопросе, выберите Ehcache - более популярное и широко используемое решение для кэширования Java. Мы широко используем Ehcache, и он работает для нас.

5 голосов
/ 19 сентября 2008

Это зависит от ваших потребностей. Если вы выполняете работу в памяти на одном компьютере, то ehcache будет работать отлично, если у вас достаточно ОЗУ или достаточно быстрый жесткий диск, чтобы переполнение не вызывало разбиение / разбиение диска. если вы обнаружите, что вам необходимо добиться масштабируемости, даже несмотря на то, что эта конкретная операция часто происходит, вам, вероятно, захочется выполнить кластеризацию. JGroups / TreeCache от JBoss поддерживают это, также как и EHcache (я думаю), и я знаю, что он определенно работает, если вы используете Ehcache с терракотой, что является очень приятной интеграцией. Этот ответ не говорит непосредственно о достоинствах EHcache и OSCache, так что вот такой ответ: EHcache, кажется, имеет наибольшую инерцию (раньше это была стандартная, хорошо известная, активная разработка, включая новый сервер кеша), и OSCache, казалось (по крайней мере, в какой-то момент), чтобы иметь немного больше возможностей, но я думаю, что с опциями, упомянутыми выше, эти преимущества спорны / заменены. Ах, еще одна вещь, которую я забыл упомянуть, это то, что транзакционность данных важна, и ваши требования уточнить список допустимых вариантов.

3 голосов
/ 27 марта 2009

Другие ответы обсуждают плюсы / минусы для кэшей; но мне интересно, пользуетесь ли вы вообще кешем вообще. Не совсем понятно, что именно вы планируете делать здесь и почему кеш будет полезен: если у вас есть набор данных, который вы используете, просто получите к нему доступ. Кэш только помогает повторно использовать вещи между независимыми задачами. Если это то, что вы делаете, да, кеширование может помочь. Но если это большая задача, которая может выполнять свой набор данных, кэширование не добавит никакой ценности.

2 голосов
/ 11 мая 2010

Я использовал oscache в нескольких проектах Spring с подпружиненными модулями, используя конфигурацию на основе aop.

Недавно я рассматривал возможность использования модулей oscache + spring в проекте Spring 3.x, но обнаружил, что кэширование на основе аннотаций модулей Spring не поддерживается (даже с помощью fork).

Я недавно узнал об этом проекте -

http://code.google.com/p/ehcache-spring-annotations/

, которая поддерживает Spring 3.x с декларативным кэшированием на основе аннотаций с использованием ehcache.

2 голосов
/ 19 сентября 2008

В любом случае, я рекомендую использовать их с Spring Modules. Кэш может быть прозрачным для приложения, и реализации кеша легко заменить. Помимо OSCache и EHCache, Spring Modules также поддерживают Gigaspaces и JBoss кеш.

Что касается сравнений .... OSCache проще настроить EHCache имеет больше опций конфигурации

Они оба надежны, оба поддерживают кеш зеркалирования, оба работают с Terracotta, оба поддерживают кеширование в памяти и на диск.

0 голосов
/ 24 мая 2016

OSCache в значительной степени мертв, поскольку он был заброшен несколько лет назад. Вы можете взглянуть на Cacheonix, он активно разрабатывается, и мы только что выпустили v.2.2.2 с поддержкой кэширования на веб-уровне. Я коммиттер, поэтому вы можете обратиться, если у вас есть какие-либо вопросы.

0 голосов
/ 19 сентября 2008

Я в основном использую EhCache, потому что он был поставщиком кеша по умолчанию для Hibernate. Существует список решений для кэширования на Java-Source.net .

Раньше у меня была ссылка, которая сравнивала основные решения для кэширования. Если я найду его, я обновлю этот ответ.

...