我正在开发一个Web应用程序,它需要对可能非常大且不断变化的数据集进行一些内存缓存。我和我的合作伙伴正在开始讨论几种解决方案,但希望能够深入了解我们对几种不同解决方案的期望。我们的应用程序是用Java编写的,将在glassfish 3.1
下运行我们也在考虑apache solr或单独使用lucene(如果我们使用hazelcast)。我们应该将solr算作内存缓存解决方案,还是solr缓存与上面列出的解决方案无法真正比较。
提前感谢您的推荐
答案 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()