如何在多个pod中收回缓存?我有两个openshift pod,我想在这两个pod中发送一个收回缓存的http请求

tpxzln5u  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(594)

我在openshift中有两个microservices pod,我想清理两个microservices的缓存。我有一个端点,清除逐出缓存,请求只进入一个pod。如何避免重启pods以清除缓存?我使用2.1.10springboot,每两小时配置一个cron,但我想清除http请求中的缓存。
我在请求中使用@cacheable from org.springframework.cache.annotation,在收回/清除缓存时使用org.springframework.cache.cachemanager.clear。

b0zn9rqh

b0zn9rqh1#

就像spring框架中的其他服务一样,缓存服务是一个抽象,而不是一个实现,需要使用一个实现来存储缓存数据。这个抽象由org.springframework.cache.cache和org.springframework.cache.cachemanager接口具体化。
您还没有谈到哪个是您的spring缓存实现,所以我假设您使用的是默认实现。
默认情况下,spring选择java.util.concurrent.concurrentmap。这个实现将数据存储在内存中,当您关闭jvm时,它将消失。对于具有多个pod的具体环境,您需要一个集群感知的缓存实现。不能依赖基于内存存储的缓存实现。
因此,您应该检查springrediscache之类的实现,它是一种集群感知的缓存实现,并在所有pod中配置它。

相关问题