编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

@Cacheable缓存key生成策略及自定义key

wxchong 2024-11-26 09:32:11 开源技术 31 ℃ 0 评论

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表