java - EhCache、JPA 2.0 L2缓存、缓存策略

标签 java caching jpa-2.0 ehcache distributed-caching

大家好,

我是 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/

相关文章:

java - 电子产品商店

java - 静态方法或单例,选择哪一个?

java - 没有连接表的多对多关联

spring - Tomcat 7 Spring 应用程序 IntelliJ IDEA 10.5 OutOfMemoryError : PermGen space

java - native 查询产生 MySQL 语法错误和意外结果

java - j_security_check 不可用

python - Celery 任务实例化缓存

javascript - 如何在订阅功能中取消订阅放大?

ios - 移除 UIWebView 的内部缓存

java - 使用 ANTLR 和 Java 构建解析树