外部缓存例如ehcache / redis在哪里适合w.r.t休眠级别1 /级别2缓存?

问题描述

Hibernate(因此在Hibernate上包装的JPA)提供了两个级别的缓存机制。 a)在会话对象层/级别的1级缓存 b)位于会话工厂层/级别的2级缓存

如果我正在使用外部缓存(例如redis或ehcache),则该缓存位于上面的位置。 还是应该禁用2级缓存以启用Redis / ehcache。不知道外部缓存如何以及在哪里适合1级和2级缓存。

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

有人可以解释。预先感谢。

解决方法

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

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

例如,如果您使用的是MySQL,则可以考虑将代理服务器也用于数据库,而不是使用ProxySQL,mysql-proxy等。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...