在小型java ee应用程序中使用2级缓存

时间:2012-12-26 20:48:09

标签: java-ee caching

我正在使用来自大约20个用户的java ee 6在Intranet中使用的库存应用程序。 在这种情况下我真的需要二级缓存吗?

2 个答案:

答案 0 :(得分:0)

没有足够的信息来回答这个问题。但是任何时候你都可以提高某些功能的性能。您的应用程序可能会增长,您将需要缓存。此外,缓存的使用在很大程度上取决于实现空间与时间的权衡。更多的空间=更少的时间和相反的情况同样如此。请考虑以下情形:

不缓存系统上的每个查询需要1秒钟。使用缓存每个查询需要0.5秒,但构建/刷新缓存的时间是20分钟

在某一点上,缓存是无用的。数学要遵循。假设必须每小时重建一次缓存才能获得性能提升,每小时的查询数必须超过每秒80次查询才能实现收支平衡。

20 minutes for the cache (60*20)  
.5 seconds per query (2 per second)    

答案 1 :(得分:0)

使用二级缓存来加速某些JPA操作可以为您的应用程序提供有趣的性能提升,在我知道的情况下,它几乎是零工作配置项。但是,它可能会引入一些非常烦人的副作用:

  • 如果您的应用程序被加载为多个可部署的(ear,war),通常每个部署的应用程序都将拥有自己的二级缓存。结果是在一个应用程序中完成的更新不会立即反映在其他应用程序中,它们将继续使用它们的缓存但现在过时的数据副本。
  • 同样的问题,如果您的应用程序不是完全使用JPA构建的,则会发生相同的陈旧性。

这就是为什么经常修改的数据不应该使用二级缓存。