- key生成策略
对于@Cacheable注解,有两个参数用于组装缓存的key
• cacheNames/value: 类似于缓存前缀
• key: SpEL表达式,通常根据传参来生成最终的缓存key
•
默认的redisKey = cacheNames::key (注意中间的两个冒号)
单参数:cacheNames::arg
无参数: cacheNames::SimpleKey [], 后面使用 SimpleKey []来补齐
多参数: cacheNames::SimpleKey [arg1, arg2...]
非基础对象:cacheNames::obj.toString()
- 自定义key生成策略
@Component("selfKeyGenerate")
public static class SelfKeyGenerate implements KeyGenerator {
@Override
public Object generate(Object target, Method method, Object... params) {
return target.getClass().getSimpleName() + "#" + method.getName() + "(" + JSON.toJSONString(params) + ")";
}
}
/**
* 对应的redisKey 为: get vv::ExtendDemo#selfKey([id])
*
* @param id
* @return
*/
@Cacheable(value = "cacheName", keyGenerator = "selfKeyGenerate")
public String testKey(int id) {
return "testKey:" + id + " --> " + UUID.randomUUID().toString();
}
/**
{
"keys": [
"vv::ExtendDemo#selfKey([1])"
],
"self": "selfKey:1 --> f5f8aa2a-0823-42ee-99ec-2c40fb0b9338"
}
*/
复制代码
参考:https://developer.aliyun.com/article/926668