gpt4 book ai didi

java - 当 Hibernate 已经存在并使用缓存时使用 memcached

转载 作者:可可西里 更新时间:2023-11-01 11:00:37 25 4
gpt4 key购买 nike

我想知道,由于市场上存在具有缓存功能的 hibernate ORM,可减少应用程序中的数据库负载,因此 Redis/Memcached 等外部​​缓存系统的可用性如何,因为它们也提供缓存机制。

由于我们的对象已经在应用程序中使用 hibernate 缓存,外部缓存系统的可用性如何。它们对应用程序性能有何帮助?

当 hibernate 已经将它们保存在内存中时,我们是否也应该将我们的类对象存储在 memcached/redis 中,或者 memcached 是否应该仅用于存储通常不会更改的列表结果而不是可以从 hibernate 缓存中获取的对象?

最佳答案

Hibernate ORM 提供两级缓存

-一级缓存:与每个 session 对象关联的进程内缓存,仅限于 session 级别,即每个 session 都有自己的一级缓存。

-二级缓存:需要配置的可插拔缓存。它是 session 工厂级缓存,即在多个 session 之间共享。

缓存解决方案,如 memcached/redis 或 Tayzgrid例如,为可以在 hibernate 应用程序中配置的 hibernate 提供二级缓存提供程序。使用此类缓存提供程序,您可以在 hibernate 应用程序中加入分布式缓存功能,例如缓存可以在多个 session 之间共享,也可以在使用同一数据库的多个应用程序之间共享。

请记住,当使用分布式缓存作为 hibernate 二级缓存时,您所需要的只是配置缓存提供程序并将要缓存的实体配置为可缓存,hibernate 本身将利用该提供程序进行缓存。例如你可以看到TayzGrid as Hibernate 2nd level cache使用 Hibernate 配置 Tayzgrid。同样,您可以配置任何其他缓存解决方案。

尽管 Hibernate 二级缓存提供程序使您可以非常轻松地将二级缓存合并到 Java 应用程序中,但请记住,您将只能获得缓存解决方案的部分功能。但是,如果您通过少量编程工作直接对缓存解决方案进行 API 调用,您将获得该解决方案提供的所有功能。就像 Tayzgrid 的情况一样,直接 API 调用将为您提供额外的功能,如批量操作、组和标签、搜索和后写等 sql 等。

关于java - 当 Hibernate 已经存在并使用缓存时使用 memcached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25458444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com