pom.xml<!-- 缓存依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>RedisConfig类// 配置缓存管理器 @Bean public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofDays(7)) // 7天缓存失效 // 设置key的序列化方式 .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerializer())) // 设置value的序列化方式 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerializer())) // 不缓存null值 .disableCachingNullValues(); RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory) .cacheDefaults(config) .transactionAware() .build(); return redisCacheManager; } // key键序列化方式 private RedisSerializer<String> keySerializer() { return new StringRedisSerializer(); } // value值序列化方式 private GenericJackson2JsonRedisSerializer valueSerializer(){ return new GenericJackson2JsonRedisSerializer(); // return new GenericFastJsonRedisSerializer(); } // 自定义key生成器 @Bean public KeyGenerator keyGenerator(){ return (o, method, params) ->{ StringBuilder sb = new StringBuilder(); sb.append(o.getClass().getName()); // 类目 sb.append(method.getName()); // 方法名 for(Object param: params){ sb.append(param.toString()); // 参数名 } return sb.toString(); }; }- SpringBoot的
Application启动类
加上@EnableCaching@EnableCaching //启动注解缓存 public class XXXApplication { public static void main(String[] args) { SpringApplication.run(XXXApplication.class, args); System.out.println("项目启动成功"); } }
这样就可以在Service里面使用了,注意一定要使用AOP注入才生效,比如在同个Class里,调方法是不生效的。
@Cacheable(value = "onePerson",key = "'userId::' + #userId")
public Person selectOne(Long userId){
//查询数据库
Person person = PersonMapper.selectOneById(userId);
return person;
}
@CachePut(value = "onePerson",key = "'userId::' + #person.userId")
public Person updateOne(Person person){
PersonMapper.updateOne(person);
return person;
}
@CacheEvict(value = "onePerson",key = "'userId::' + #userId")
public int deleteOne(Long userId){
return PersonMapper.deleteOneById(userId);
}
该博客介绍了如何在SpringBoot应用中配置和使用Redis作为缓存。通过添加spring-boot-starter-cache依赖,配置RedisCacheManager,并自定义key生成器和序列化方式,实现了缓存7天后失效的功能。同时,展示了@Cacheable、@CachePut和@CacheEvict注解的使用,强调了AOP注入在缓存操作中的重要性。

7132

被折叠的 条评论
为什么被折叠?



