自行导入redis插件
//定义缓存数据 key 生成策略的bean
@Bean
public KeyGenerator wiselyKeyGenerator(){
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
//创建RedisTemplate
@Bean
public CacheManager cacheManager(
@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
return cacheManager;
}
//Spring管理
@Bean
public RedisTemplate<String, String> redisTemplate(
RedisConnectionFactory factory) {StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
使用:
@Cacheable(value="role",key="'role'.concat(#id)")
public List<Role> selectByrUserId(int id) {
return roleRespotry.selectByrUserId(id);
}
value | 缓存的名称 | @Cacheable(value=”list”) |
---|---|---|
key | 缓存的key,按照EL 表达式进行编写 | @Cacheable(value=”list”,key=”#username”) |
condition | 缓存的条件,true才开启缓存,默认市false | @Cacheable(value=”list”,condition=”#username.length()>2”) |
CachePut更新
value | 缓存的名称 | @CachePut(value=”list”) |
---|---|---|
key | 缓存的key,按照EL 表达式进行编写 | @CachePut(value=”list”,key=”#username”) |
condition | 缓存的条件,true才开启缓存,默认市false | @CachePut(value=”list”,condition=”#username.length()>2”) |
value | 缓存的名称 | @CachEvict(value=”list”) | |
key | 缓存的key,按照EL 表达式进行编写 | @CachEvict(value=”list”,key=”#username”) | |
condition | 缓存的条件,true才开启缓存,默认市false | @CachEvict(value=”list”,condition=”#username.length()>2”) | |
allEntries | 清空缓存内容,缺省为 false,如果指定为 true, | @CachEvict(value=”list”,allEntries=true) |