问题描述
Hibernate(因此在Hibernate上包装的JPA)提供了两个级别的缓存机制。 a)在会话对象层/级别的1级缓存 b)位于会话工厂层/级别的2级缓存
如果我正在使用外部缓存(例如redis或ehcache),则该缓存位于上面的位置。 还是应该禁用2级缓存以启用Redis / ehcache。不知道外部缓存如何以及在哪里适合1级和2级缓存。
或者-可以进行各种配置吗?
有人可以解释。预先感谢。
解决方法
一级缓存被认为是本地内存缓存,它也可以是本地Redis / Memcache缓存。 2级缓存就像代理服务器一样,可以缓存查询结果,任何服务器的所有后续查询都将提供缓存中的结果(如果有)。
1级缓存结果仅可用于一台服务器,而2级缓存可被视为可用于所有服务器的分布式缓存。如果您的应用程序仅在一台服务器/实例上运行,则使用2级缓存是没有意义的。
例如,如果您使用的是MySQL,则可以考虑将代理服务器也用于数据库,而不是使用ProxySQL,mysql-proxy等。