我正处于这样一个阶段,我需要决定在对象缓存达到配置的阈值时该怎么做。
我应该将对象存储在索引文件中(如JCS提供),并在需要时从文件(文件IO)中读取它们,或者将对象存储在分布式缓存中(网络,序列化,反序列化)
我们使用Solaris作为操作系统。
============================
添加更多信息。
我有这个问题,以确定我是否可以切换到分布式缓存。具有缓存的远程服务器将拥有更多内存和更好的磁盘,而这个远程服务器将仅用于缓存。
我们无法增加本地缓存对象的一个问题是,它将缓存的对象存储在内存有限的JVM堆中(使用32位JVM)。
=============================================== =========================
谢谢,我们最终选择Coherence作为我们的缓存产品。这提供了许多缓存配置拓扑,在进程中与远程对磁盘..等等。
答案 0 :(得分:3)
它将取决于许多因素,如磁盘速度,网络延迟和数据量,因此一些实验可能是获得想法的最佳方式。我建议您查看http://ehcache.org/,它可能会派上用场。
答案 1 :(得分:2)
真正了解的唯一方法是测试它,但是从缓存中获得良好的网络延迟,它可能比本地磁盘访问更快。
一旦处理了足够大的缓存请求,对本地磁盘的序列化随机访问可能会成为一个问题。
答案 2 :(得分:1)
您是否希望分布式节点将数据保存在内存中?我不愿意。
如果您无法确定分布式节点是否会将数据保存在内存中,那么在网络上保留数据将花费时间从磁盘读取数据,并通过网络发送数据。在本地保存数据只需要花时间从磁盘读取数据。
本地速度更快。
答案 3 :(得分:0)
几乎可以肯定,您可以更快地将数据缓存在文件中,而不是通过网络缓存。
答案 4 :(得分:0)
这些选项并不相互排斥,有些产品可以将两者结合起来。例如,Oracle Coherence可以提供复杂的分布式缓存服务,并且可以在超出阈值时溢出到磁盘。
答案 5 :(得分:0)
查看memcached,一个分布式内存缓存。您需要针对自己的特定用途运行性能比较,但分布式内存缓存通常可以胜过本地磁盘缓存。
答案 6 :(得分:-1)
我不明白这个问题。您是否需要分布式缓存?只需回答这个问题,找出你需要的东西。