大家好,
我是 L2 缓存世界的新手,所以请对我宽容一点:)。我有几个问题:
1) EhCache 与 JPA 2.0 L2 缓存有什么区别?
据我了解,EhCache 是分布式的(也可以是独立的),而 JPA 2.0 L2 Cache 不是(每个 JVM)。
2)缓存策略
请分享您的缓存 101 策略。如何缓存集合(问题和技巧)?如何搜索缓存池中的对象(如果您知道正在缓存它)。
3) 缓存和存储过程
假设数据库支持 2 个不同的应用程序。当一个应用程序通过存储过程更新数据,而另一个应用程序(缓存)读取数据时,如何解决更新问题?对于读者来说,就好像没有更新一样。
我听说某些大型网站会缓存所有内容。这是否意味着他们在缓存库和 JPA/ORM 之上编写自己的数据访问层?
PS:我知道黄金法则是避免尽早缓存或更好地增加硬件功能。我问这个问题是为了学习。我也不是要求一个具体的场景,而是更多的一般规则、一般场景、最低公分母,它不必解决每个人的问题。
谢谢!
最佳答案
1) EHCache 是一个缓存实现。 JPA2 L2 是一个缓存接口(interface)。您可以使用 EHCache 作为 JPA L2 缓存提供程序。您选择的 L2 缓存提供程序应完全取决于您的要求。如果您认为 EHCache 最适合,那么就使用它。
2)我要离开这个,因为它有点模糊。对于许多不同的场景,有许多好的策略。
3) 如果您有某些内容正在更新数据库但未命中缓存,那么您的缓存将变得陈旧。如果这在您的域中没问题,那就没问题。否则,您需要针对缓存或更新需求提出不同的解决方案,以便它们保持同步。
关于java - EhCache、JPA 2.0 L2缓存、缓存策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4710502/