什么内存缓存实现将花费最少的努力来构建

时间:2011-08-13 22:11:31

标签: java caching lucene redis hazelcast

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

下运行
  1. redis和webdis
  2. hazelcast
  3. Apache JCS
  4. 使用java创建我们自己的
  5. 我们也在考虑apache solr或单独使用lucene(如果我们使用hazelcast)。我们应该将solr算作内存缓存解决方案,还是solr缓存与上面列出的解决方案无法真正比​​较。

    提前感谢您的推荐

2 个答案:

答案 0 :(得分:4)

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

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

我不熟悉redis或webdis。


您没有将其添加到列表中,但如果您真正需要的是缓存,请考虑使用Ehcache

答案 1 :(得分: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()