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

问题描述

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

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

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

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

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

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

解决方法

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...