【问题标题】:multi-layered caching with ehcache使用 ehcache 进行多层缓存
【发布时间】:2012-08-15 06:06:28
【问题描述】:

我正在进行的一个项目,我们决定在我们的基于 Web 的应用程序中实现 ehcache 以实现缓存目的。在大多数情况下,我们会将它用于 Hibernate 缓存(主表)和查询缓存。

不过,我们也在考虑在 DAO 层进行方法缓存。老实说,我对此有点怀疑。这可能意味着,我们在 DAO 层有一个方法,该方法反过来触发一个查询(已经缓存),那么缓存该方法是否有意义?我的感觉是,要么我们应该缓存方法,要么缓存该方法最终触发的查询。

请务必让我知道您的意见!

【问题讨论】:

标签: java hibernate caching dao ehcache


【解决方案1】:

根据我的经验,这在很大程度上取决于您的应用程序(以及数据的种类/结构)。我目前正在处理的应用程序有 3 个内置缓存层(全部由 Ehcache 支持):一层作为 Hibernate 二级缓存,一层用于中间层的短期热对象,一层用于长期的胖值对象立面层。调整缓存(缓存查询参数、生命周期、大小等)以很好地相互补充。

所以先验,我不会说它不起作用。您可以跳过整个 ORM 层。如果你有一些配置文件(我喜欢perf4j),你至少可以优化从你的 DAO 获得的昂贵的“热”对象。如果您使用的是 Spring Framework,您可以通过应用例如轻松地做到这一点。 @Cacheable 方法的注释。如果可能,使用(接近)实时数据和请求进行性能测试。

事实上,我认为使用 Hibernate 二级缓存是一件容易/懒惰的事情(可以说是一个好的第一步),但性能提升是有限的。通过一些更具体的缓存,您可以轻松地获得成百上千的因子,作为应用程序部分(希望是重要部分)的加速,通常是在减少负载的情况下。

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 2016-08-24
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2016-06-20
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多