全部,
我是L2缓存世界的新手,所以请放轻松我:)。我有几个问题:
1)EhCache与JPA 2.0二级缓存有什么区别?
据我了解,EhCache是分布式的(也可以是独立的),而JPA 2.0 L2 Cache则不是(每个JVM)。
2)缓存策略
请分享您的缓存101策略。如何缓存集合(问题和提示)?如何搜索缓存池中的对象(如果您知道正在缓存它)。
3)缓存和存储过程
假设数据库支持2个不同的应用程序。当一个应用程序通过存储过程更新数据而另一个(缓存)读取数据时,如何解决更新问题?对于读者来说,好像没有更新。
我听说过某些大型网站会缓存所有内容的故事。这是否意味着他们在缓存库和JPA / ORM之上编写自己的数据访问层?
PS:我知道黄金法则是尽早避免缓存或更好地提高硬件功能。我问这个问题是为了学习目的。我也没有要求特定的情况,但更多的一般规则,一般情况,最低共同点,它不必解决每个人的问题。谢谢!
答案 0 :(得分:4)
1)EHCache是一种缓存实现。 JPA2 L2是一个缓存接口。您可以使用EHCache作为JPA L2缓存提供程序。您选择的L2缓存提供程序应完全取决于您的要求。如果您认为EHCache最适合,那就使用它。
2)我要离开这个,因为它有点模糊。对于许多不同的场景,有许多好的策略。
3)如果您有更新数据库而没有点击缓存的内容,那么您的缓存将变得陈旧。如果你的域名没问题,那很好。否则,您需要为缓存或更新需求提供不同的解决方案,以便它们保持同步。