springboot使用本地或Redis做缓存
1.springboot版本:1.5.13.RELEASE
2.引入如下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency>
3.配置CacheManager
-
GuavaCacheConfig
@Configuration public class GuavaCacheConfig { @Primary @Bean("guavaCacheManager") public CacheManager guavaCacheManager(){ GuavaCacheManager manager = new GuavaCacheManager(); manager.setCacheBuilder(CacheBuilder.newBuilder() .expireAfterAccess(10, TimeUnit.SECONDS) .maximumSize(1000)); return manager; } }
-
RedisCacheConfig
@Configuration public class RedisCacheConfig { @Autowired @Qualifier("springCacheRedisTemplate") RedisTemplate redisTemplate; @Bean("redisCacheManager") public CacheManager redisCacheManager(){ RedisCacheManager manager = new RedisCacheManager(redisTemplate); manager.setDefaultExpiration(10 * 60); // 设置过期时间30秒 return manager; } @Bean("springCacheRedisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory factory) { RedisTemplate<Object, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); template.setKeySerializer(jackson2JsonRedisSerializer); template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashKeySerializer(jackson2JsonRedisSerializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); template.setEnableTransactionSupport(true); return template; } }
3.使用缓存
在启动类上添加@EnableCaching注解开启缓存
@EnableCaching @SpringBootApplication @MapperScan("com.xys.springboot.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
4.使用缓存
@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override @Cacheable( value = "user-cache", key = "#id", cacheManager = "guavaCacheManager") public User getUserByCache(Integer id) { return this.getById(id); } @Override @Cacheable( value = "user-cache", key = "'user:username:' + #username", cacheManager = "redisCacheManager") public User getUserByCache(String username) { return this.getOne(Wrappers.<User>lambdaQuery().eq(User::getUsername, username)); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了