Java对象缓存,从文件或远程计算机读取更快?

时间:2009-06-10 18:04:21

标签: java caching jcs

我正处于这样一个阶段,我需要决定在对象缓存达到配置的阈值时该怎么做。

我应该将对象存储在索引文件中(如JCS提供),并在需要时从文件(文件IO)中读取它们,或者将对象存储在分布式缓存中(网络,序列化,反序列化)

我们使用Solaris作为操作系统。

============================

添加更多信息。

我有这个问题,以确定我是否可以切换到分布式缓存。具有缓存的远程服务器将拥有更多内存和更好的磁盘,而这个远程服务器将仅用于缓存。

我们无法增加本地缓存对象的一个​​问题是,它将缓存的对象存储在内存有限的JVM堆中(使用32位JVM)。

=============================================== =========================

谢谢,我们最终选择Coherence作为我们的缓存产品。这提供了许多缓存配置拓扑,在进程中与远程对磁盘..等等。

7 个答案:

答案 0 :(得分:3)

它将取决于许多因素,如磁盘速度,网络延迟和数据量,因此一些实验可能是获得想法的最佳方式。我建议您查看http://ehcache.org/,它可能会派上用场。

答案 1 :(得分:2)

真正了解的唯一方法是测试它,但是从缓存中获得良好的网络延迟,它可能比本地磁盘访问更快。

一旦处理了足够大的缓存请求,对本地磁盘的序列化随机访问可能会成为一个问题。

答案 2 :(得分:1)

您是否希望分布式节点将数据保存在内存中?我不愿意。

如果您无法确定分布式节点是否会将数据保存在内存中,那么在网络上保留数据将花费时间从磁盘读取数据,并通过网络发送数据。在本地保存数据只需要花时间从磁盘读取数据。

本地速度更快。

答案 3 :(得分:0)

几乎可以肯定,您可以更快地将数据缓存在文件中,而不是通过网络缓存。

答案 4 :(得分:0)

这些选项并不相互排斥,有些产品可以将两者结合起来。例如,Oracle Coherence可以提供复杂的分布式缓存服务,并且可以在超出阈值时溢出到磁盘。

答案 5 :(得分:0)

查看memcached,一个分布式内存缓存。您需要针对自己的特定用途运行性能比较,但分布式内存缓存通常可以胜过本地磁盘缓存。

答案 6 :(得分:-1)

我不明白这个问题。您是否需要分布式缓存?只需回答这个问题,找出你需要的东西。