Redis注解开发实战指南,网友力荐:高效便捷的缓存解决方案

文章导读
@Cacheable(key = "user:" + #id) public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } 这个注解直接帮你缓存用户数据,下次调用就从Redis里拿,超级快!网友说用这个后,接口响应时间从500ms降到50ms,效果炸裂。
📋 目录
  1. 实战案例一
  2. 实战案例二
  3. 实战案例三
  4. 网友经验分享
  5. 配置要点
A A

@Cacheable(key = "user:" + #id) public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } 这个注解直接帮你缓存用户数据,下次调用就从Redis里拿,超级快!网友说用这个后,接口响应时间从500ms降到50ms,效果炸裂。

实战案例一

在Spring Boot项目中,引入spring-boot-starter-data-redis依赖,然后开启缓存注解@EnableCaching。写个服务类,加@Cacheable(value="users", key="'user:' + #id"),查询数据库的用户信息自动缓存到Redis。测试时发现,第二次请求直接命中缓存,不走数据库,QPS提升3倍多。

实战案例二

@CacheEvict(value = "users", key = "'user:' + #id) public void deleteUser(Long id) { userRepository.deleteById(id); } 删除用户时自动清除对应缓存,避免脏数据。网友分享,用这个后系统稳定多了,以前缓存过期手动删太麻烦。

实战案例三

@Caching注解组合使用最强大:@Caching(put = {@Cacheable(value="user", key="#user.id")}, evict = {@CacheEvict(value="users", allEntries = true)}) 更新用户时,既缓存单个用户,又清空列表缓存。实际项目里,这个救了我一命,高并发下缓存一致性完美。

Redis注解开发实战指南,网友力荐:高效便捷的缓存解决方案

网友经验分享

小Tips:key要用SpEL表达式动态生成,避免固定key冲突。设置TTL用@Cacheable(unless="#result == null")过滤空值。Redis集群环境直接配JedisConnectionFactory,注解照用无压力。网友力荐,入门5分钟,收益一生!

配置要点

application.yml里加spring.redis.host=localhost,spring.redis.port=6379,然后RedisCacheManager配置序列化用Jackson2JsonRedisSerializer,避免默认JDK序列化乱码。启动类加@EnableCaching,一键搞定。

FAQ
Q: @Cacheable和@CachePut区别?
A: @Cacheable不执行方法直接返缓存,@CachePut总是执行方法并更新缓存。
Q: 缓存穿透怎么处理?
A: 加unless="#result == null",或用缓存空值策略。
Q: 多级缓存怎么用?
A: @Caching嵌套多个Cacheable指定不同namespace。
Q: Redis内存不够咋办?
A: 配置maxmemory-policy allkeys-lru自动淘汰。