使用 Spring Cache 来整合 Redis 作为缓存,核心目的是简化缓存逻辑的开发,同时利用 Redis 高性能的缓存能力,并借助 Spring 的抽象能力实现缓存逻辑的标准化、低耦合。
具体来说,为什么要这样做?

  1. 简化缓存代码,减少重复劳动
    Redis 作为缓存时,原生用法需要手动编写大量重复代码:

先查缓存(redisTemplate.opsForValue().get(key));
缓存不存在则查数据库;
查完数据库再手动将结果存入缓存(redisTemplate.opsForValue().set(key, value, 过期时间));
还需要处理缓存更新、删除等逻辑(如更新数据后删除缓存)。

pom.xml导入

2025-08-12T12:11:07.png

常用注解

2025-08-12T12:10:16.png

使用方法

在启动类加@EnableCaching注解

2025-08-12T15:12:54.png

@CachePut注解,cacheNames未键名,其实在redis生成的是cacheNames后面的userCache::在加key,一种树形结构

2025-08-12T15:32:37.png
2025-08-12T15:32:47.png
2025-08-12T15:33:12.png

@Cacheable注解,用于查询数据的时候,如果换成有这个数据,那么就返回这个缓存,如果没有,那么就去查询(如mysql)查询的返回结果返回给用户,方法结束后,同时也存入缓存,下次查询的时候,返回缓存数据即可,无需执行下方方法;

2025-08-12T15:48:15.png
2025-08-12T15:43:31.png
2025-08-12T15:46:12.png

@CacheEvict [evict:意思是逐出,驱赶],在执行方法后,删除对于缓存;

2025-08-12T15:56:00.png
2025-08-12T15:56:11.png
删除成功后
2025-08-12T15:56:27.png
2025-08-12T15:56:39.png
2025-08-12T15:56:47.png
删除所有缓存,则使用allEntries=true,就不用后面的key唯一标识了
2025-08-12T16:00:08.png