首页 > 解决方案 > 像 ehcache / redis 这样的外部缓存在哪里适合 wrt hibernate level 1 / level 2 缓存?

问题描述

Hibernate(以及作为 Hibernate 的包装器的 JPA)提供了两个级别的缓存机制。a) 一级缓存,位于会话对象层/级别 b) 二级缓存,位于会话工厂层/级别

如果我使用的是 redis 或 ehcache 等外部缓存,那么这个缓存在上面的哪个位置。或者我应该禁用 2 级缓存以启用 redis/ehcache。不确定外部缓存如何以及在何处适合 1 级和 2 级缓存。

或者 - 是否可以进行各种配置?

有人可以解释一下。提前致谢。

标签: hibernatecachingredisehcachehibernate-cache

解决方案


一级缓存被认为是本地内存缓存,也可以是本地 Redis/Memcache 缓存。二级缓存就像一个代理服务器,它缓存查询的结果,任何服务器的所有后续查询都将提供缓存中的结果(如果可用)。

一级缓存结果仅对一台服务器可用,而二级缓存可以被视为对所有服务器都可用的分布式缓存。如果您的应用程序仅在一台服务器/实例上运行,那么使用 2 级缓存是没有意义的。

您可以考虑为您的数据库使用代理服务器,例如,如果您使用 MySQL,则可以考虑使用 ProxySQL、mysql-proxy 等。


推荐阅读