使用 Redis/Hazelcast 可能会产生最佳性能,因为不再有任何到 DB 的往返行程,但最终在 DB 中有规范化数据,在缓存中有非规范化副本,这会给缓存更新策略带来压力。因此,只要持久化数据发生变化,您就会以实现缓存更新为代价获得最佳性能。
使用二级缓存更容易设置,但它仅按 id 存储实体。还有一个查询缓存,用于存储给定查询返回的 ID。因此,二级缓存是一个两步过程,您需要对其进行微调以获得最佳性能。当您执行投影查询时,二级对象缓存不会帮助您,因为它仅对实体加载进行操作。二级缓存的主要优点是在数据发生变化时更容易保持同步,尤其是当你的所有数据都被休眠保存时。