2

我正在开发一个 Web 应用程序,这将需要对可能非常大且不断变化的数据集进行一些内存缓存。我和我的合作伙伴开始讨论几种解决方案,但想深入了解我们对几种不同解决方案的期望。我们的应用程序是用 Java 编写的,将在 glassfish 3.1 下运行

  1. redis 和 webdis
  2. 榛树
  3. 阿帕奇 JCS
  4. 用java创建我们自己的

我们也在考虑单独使用 apache solr 或可能的 lucene(如果我们使用 hazelcast)。我们应该将 solr 算作内存缓存解决方案,还是 solr 缓存与上面列出的解决方案没有真正可比性。

提前感谢您的建议

4

2 回答 2

4

显然,选项 4 绝对不是最省力的。

我在 Hazelcast 上取得了不错的成绩。它以最小的努力提供了良好的回报。配置简单/直接,整个库“正常工作”。

我不熟悉redis或webdis。


您没有将它包含在列表中,但如果您真正需要的是缓存,请考虑使用Ehcache

于 2011-08-13T22:15:25.693 回答
0

如果你想要简单,你不会比使用 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()

于 2011-08-14T06:55:35.943 回答