Spring Cache,缓存新数据时如何删除另一个缓存数据?

时间:2020-12-27 13:15:40

标签: spring-boot caching ehcache

标题可能看起来很奇怪,但这就是问题所在。

我在 Spring Boot 应用程序上使用 ehcache。我有一个看起来像这样的函数:

public Result foo(double value, String id){
    ...
    ...
    return convertValueToResult(value,id); 
}

现在我需要的是这个场景:我想缓存这个函数,这样如果我收到具有相同值的相同 id(字面上相同的参数),我想从缓存中返回结果而不再次执行该函数.

但是,如果我得到具有不同值的相同 id,我想重新执行该函数,计算答案,将其缓存并删除先前缓存的数据

如何使用@Cacheable、@CachePut 或@CacheEvict 注释来实现这一点?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

将缓存视为地图。如果使用相同的键执行 put 操作,它将覆盖该值。

在你上面的代码中,你必须使用@Cacheable(key="#id")

相关问题