2

大家好,

我是 L2 缓存世界的新手,所以请放轻松:)。我有几个问题:

1) EhCache 与 JPA 2.0 L2 缓存有什么区别?

据我了解,EhCache 是分布式的(也可以是独立的),而 JPA 2.0 L2 缓存不是(每个 JVM)。

2) 缓存策略

请分享您的缓存 101 策略。如何缓存收藏(问题和提示)?如何在缓存池中搜索对象(如果您知道正在缓存它)。

3)缓存和存储过程

假设数据库在其之上支持 2 个不同的应用程序。当一个应用程序通过存储过程更新数据而另一个(缓存)读取它时,如何解决更新问题?对读者来说,就好像没有更新一样。

我听说某些大型网站会缓存所有内容。这是否意味着他们在缓存库和 JPA / ORM 之上编写了自己的数据访问层?

PS:我知道黄金法则是尽早避免缓存,或者更好地增加硬件能力。我问这个问题是为了学习。我也不是要求一个特定的场景,而是更多的一般规则,一般场景,最小公分母,它不必解决每个人的问题。

谢谢!

4

1 回答 1

4

1) EHCache 是一种缓存实现。JPA2 L2 是一个缓存接口。您可以使用 EHCache 作为您的 JPA L2 缓存提供程序。您选择的 L2 缓存提供程序应完全取决于您的要求。如果您认为 EHCache 最合适,请使用它。

2)我要离开这个,因为它有点模糊。对于许多不同的场景,有许多好的策略。

3)如果你有一些东西正在更新你的数据库并且没有命中你的缓存,那么你的缓存就会变得陈旧。如果这在您的域中没问题,那么很好。否则,您将需要针对缓存或更新需求提出不同的解决方案,以使它们保持同步。

于 2011-01-17T09:11:51.590 回答