要求是缓存大量(100,000到1,000,000)小对象,并根据未来事件控制单个对象的到期。到期时没有时间组件。
缓存必须可用于许多应用程序服务器(SpringSource dm Server),理想情况下应该可以自行分发和容错。
我一直在看Terracotta作为一种可能的解决方案。这是一条很好的道路吗?还有更好的吗?
答案 0 :(得分:4)
我认为最好的选择是JBoss Infinispan(http://www.jboss.org/infinispan)。缓存很容易设置,支持复制,驱逐,持久性等许多其他事情。更重要的是,缓存可在您的应用程序服务器中运行。您还可以使用REST访问缓存,并且有将Hibernate连接到其上的抽象。
答案 1 :(得分:1)
来自键值世界的一些(更少)新来者可能是另一种选择。如果我理解你的要求,memcached接缝自然适合,开销很小。客户端一致性散列将为您提供相当好的容错能力。
Redis,Voldemort或Tokyo Tyrant也是相关的,即使他们更多关于存储而不是缓存。特别是Redis有一些非常性感的功能(列表,集合,原子操作......)
答案 2 :(得分:1)
我们一直在使用Terracotta,我们对它非常满意。它的带有Cache Evictors的分布式缓存是我们解决问题的绝佳解决方案。
答案 3 :(得分:1)
你考虑过Memcached吗?你特别提到了小对象:memcached在这方面很棒。它是分布式和容错的,非常快速,开源,在各地积极使用和维护,并且有两个很棒的Java客户端API:Danga和Spy。
memcached不符合你的唯一要求是缺少对象到期的时间组件。我相信对象在缓存中可以花费的最长时间是30天。 YMMV。