Какая реализация кэша памяти потребует наименьшего количества усилий для создания - PullRequest
2 голосов
/ 14 августа 2011

Я работаю над веб-приложением, которое потребует некоторого кэширования в памяти потенциально очень больших и изменяющихся наборов данных. Мои партнеры и я начинаем обсуждать несколько решений, но хотели бы получить некоторое представление о том, что мы можем ожидать от пары различных решений. Наше приложение написано на Java и будет работать под Glassfish 3.1

  1. Redis и WebDIS
  2. hazelcast
  3. Apache JCS
  4. Создайте свой собственный с Java

Мы также рассматриваем apache solr или возможный только люцен (если мы используем hazelcast). Должны ли мы считать solr решением для кэширования памяти, или действительно ли кэш solr не сопоставим с решениями, перечисленными выше.

Заранее спасибо за ваши рекомендации

Ответы [ 2 ]

4 голосов
/ 14 августа 2011

Должно быть очевидно, что вариант 4 определенно не наименьшее усилие.

У меня были хорошие результаты с Hazelcast.Это обеспечивает хорошую отдачу от минимальных усилий.Конфигурация проста / понятна, и библиотека в целом «просто работает».

Я не знаком с redis или webdis.


Вы не включили его в свой список, но рассмотрите возможность использования Ehcache , если вам действительно нужен кеш .

0 голосов
/ 14 августа 2011

Если вам нужна простота, вы не будете намного проще, чем использовать LinkedHashMap в качестве кэша.

public static <K,V> Map<K,V> lruCache(final int maxSize) {
    return new LinkedHashMap<K,V>(maxSize*4/3, 0.75f, true) {
        @Override
        protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
            return size() > maxSize;
        }
    };
}

Основной недостаток в том, что он очень прост.

Если вы хотите егочтобы быть потокобезопасным, используйте Collections.synchronizedMap ()

...