Spring 缓存 + Redis 缓存不会根据方法/类名计算键



我使用带有jcache抽象的redison,简单地说,我有这样的:

public class MyService{
@Cacheable("cacheA")
public String returnSomethingAfterLongTime(String parameter){
//...
}
@Cacheable("cacheA")
public String returnSomethingElse(String parameter){
}
}

问题是,它们都创建了一个类似于"cacheA::parameter"的redis键,换句话说,类和方法名称没有被考虑在内。

如果字符串"parameter"是一个常用词,这会导致一个问题,因为我必须了解代码中使用"cacheA"的每一部分,以确保不会因为"parameter"键可以在调用之间复制而导致效率低下。

是不是我做错了什么?

看起来可以指定一个"key"属性,根据方法名称将其自定义为缓存。

Spring可缓存密钥属性

这篇文章有很多好的例子和答案。

我个人从未使用过Spring Cache,但看起来您可以指定@Cacheable("cacheA", key="#parameter"),参数的将用作键,而不是单词"parameter"。

最新更新