我使用带有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"。