我使用spring boot、jpa和java 8等技术。我有一个问题,我如何检查缓存是否为空,并应该向数据库发送查询以重新加载它(如何检查是否需要重新加载缓存)?
发布于 2018-12-18 23:42:16
由于您的问题不清楚您使用的是什么类型的缓存??JPA使用的第一级缓存是持久化上下文。实体管理器保证在单个持久性上下文中,对于任何特定的数据库行,将只有一个对象实例。但是,同一个实体可以在另一个用户的事务中进行管理,因此您应该使用乐观或悲观锁定。
如果你指的是二级缓存,这一级缓存是由于performance reasons.this二级缓存位于实体管理器和数据库之间。持久化上下文共享缓存,使二级缓存在整个应用程序中可用。数据库流量大大减少,因为实体被加载到共享缓存中,并从共享缓存中可用。因此,实际上,如果发生缓存未命中,您不需要担心从数据库重新加载数据。
现在,如果你正在实现自己的逻辑来实现缓存,那么你需要更多地研究缓存是如何工作的,以及不同的缓存算法,比如LRU,MRU等等(我个人不建议这样做,因为你可以使用现有的可用的提供商,比如ehcache,redis,hazelcast,只有几个名字用于二级缓存)
https://stackoverflow.com/questions/53836202
复制相似问题