Caching 数据库中发生更新时刷新的Ehcache
我是Ehcache新手,我的RESTAPI缓存工作正常Caching 数据库中发生更新时刷新的Ehcache,caching,spring-boot,ehcache,spring-4,spring-restcontroller,Caching,Spring Boot,Ehcache,Spring 4,Spring Restcontroller,我是Ehcache新手,我的RESTAPI缓存工作正常 <cache name="com.a.b.c.model.Act" maxElementsInMemory="10000" overflowToDisk="false" statistics="true" /> 若我通过查询在数据库中进行任何更新,缓存将不会更新这些更改 如果我通过RESTAPI进行更新,缓存将被刷新 当数据库中发生更改时,如果必须获得缓存刷新,则必须进行哪些更改 使用timeToLiveSeconds或任
<cache name="com.a.b.c.model.Act"
maxElementsInMemory="10000" overflowToDisk="false" statistics="true" />
若我通过查询在数据库中进行任何更新,缓存将不会更新这些更改
如果我通过RESTAPI进行更新,缓存将被刷新
当数据库中发生更改时,如果必须获得缓存刷新,则必须进行哪些更改
使用timeToLiveSeconds或任何其他可以完成的配置好吗?当底层记录系统更改时更新缓存,而不是通过执行缓存的服务方法,这是缓存的典型问题 Ehcache没有提供现成的解决方案,因为这意味着支持所有可以作为记录系统的技术。不仅是数据库,还有web服务,还有程序员能想到的任何东西 但是,如果您的应用程序可以在缓存中保留过时的数据一小段时间,那么过期可能会有所帮助。它有效地将缓存项标记为在一段时间内有效
如果应用程序无法支持缓存中的过时数据,则必须确保更新记录系统的过程也会使缓存失效 当底层记录系统发生更改时更新缓存,而不是通过执行缓存的服务方法,这是缓存的经典问题 Ehcache没有提供现成的解决方案,因为这意味着支持所有可以作为记录系统的技术。不仅是数据库,还有web服务,还有程序员能想到的任何东西 但是,如果您的应用程序可以在缓存中保留过时的数据一小段时间,那么过期可能会有所帮助。它有效地将缓存项标记为在一段时间内有效
如果应用程序无法支持缓存中的过时数据,则必须确保更新记录系统的过程也会使缓存失效 如果升级数据库的代码可以访问Ehcache管理器(相同的VM或分布式持久性),那么最好的解决方案是中断缓存
CacheManager.getInstance().getEhcache("mycache").remove(key);
并让缓存自动刷新
如果您已经处理了更新的对象,还可以使用put
CacheManager.getInstance().getEhcache("mycache").put(key, updatedObject);
如果您的代码有
CacheEntryFactories
我会让工厂做这项业务(条目创建是集中的,您可以在那里添加更多逻辑)如果升级数据库的代码可以访问Ehcache管理器(相同的VM或分布式持久性),最好的解决方案是断开缓存
CacheManager.getInstance().getEhcache("mycache").remove(key);
并让缓存自动刷新
如果您已经处理了更新的对象,还可以使用put
CacheManager.getInstance().getEhcache("mycache").put(key, updatedObject);
如果您的代码有CacheEntryFactories
我会让工厂来做这项业务(条目创建是集中的,您可以在那里添加更多逻辑)