千家信息网

Spring Boot整合Spring Cache及Redis过程的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关Spring Boot整合Spring Cache及Redis过程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.安装red
千家信息网最后更新 2026年10月31日Spring Boot整合Spring Cache及Redis过程的示例分析

这篇文章将为大家详细讲解有关Spring Boot整合Spring Cache及Redis过程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1.安装redis

a.由于官方是没有Windows版的,所以我们需要下载微软开发的redis,网址:

https://github.com/MicrosoftArchive/redis/releases

b.解压后,在redis根目录打开cmd界面,输入:redis-server.exe redis.windows.conf,启动redis(关闭cmd窗口即停止)

2.使用

a.创建SpringBoot工程,选择maven依赖

          org.springframework.boot      spring-boot-starter-web              org.springframework.boot      spring-boot-starter-thymeleaf              org.springframework.boot      spring-boot-starter-data-redis        .....  

b.配置 application.yml 配置文件

server: port: 8080spring: # redis相关配置 redis:  database: 0  host: localhost  port: 6379  password:  jedis:   pool:    # 连接池最大连接数(使用负值表示没有限制)    max-active: 8    # 连接池最大阻塞等待时间(使用负值表示没有限制)    max-wait: -1ms    # 连接池中的最大空闲连接    max-idle: 5    # 连接池中的最小空闲连接    min-idle: 0    # 连接超时时间(毫秒)默认是2000ms  timeout: 2000ms # thymeleaf热更新 thymeleaf:  cache: false

c.创建RedisConfig配置类

@Configuration@EnableCaching //开启缓存public class RedisConfig {  /**   * 缓存管理器   * @param redisConnectionFactory   * @return   */  @Bean  public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {    // 生成一个默认配置,通过config对象即可对缓存进行自定义配置    RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();    // 设置缓存的默认过期时间,也是使用Duration设置    config = config.entryTtl(Duration.ofMinutes(30))        // 设置 key为string序列化        .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))        // 设置value为json序列化        .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer()))        // 不缓存空值        .disableCachingNullValues();    // 对每个缓存空间应用不同的配置    Map configMap = new HashMap<>();    configMap.put("userCache", config.entryTtl(Duration.ofSeconds(60)));    // 使用自定义的缓存配置初始化一个cacheManager    RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory)        //默认配置        .cacheDefaults(config)        // 特殊配置(一定要先调用该方法设置初始化的缓存名,再初始化相关的配置)        .initialCacheNames(configMap.keySet())        .withInitialCacheConfigurations(configMap)        .build();    return cacheManager;  }  /**   * Redis模板类redisTemplate   * @param factory   * @return   */  @Bean  public RedisTemplate redisTemplate(RedisConnectionFactory factory) {    RedisTemplate template = new RedisTemplate<>();    template.setConnectionFactory(factory);    // key采用String的序列化方式    template.setKeySerializer(new StringRedisSerializer());    // hash的key也采用String的序列化方式    template.setHashKeySerializer(new StringRedisSerializer());    // value序列化方式采用jackson    template.setValueSerializer(jackson2JsonRedisSerializer());    // hash的value序列化方式采用jackson    template.setHashValueSerializer(jackson2JsonRedisSerializer());    return template;  }  /**   * json序列化   * @return   */  private RedisSerializer jackson2JsonRedisSerializer() {    //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值    Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class);    //json转对象类,不设置默认的会将json转成hashmap    ObjectMapper mapper = new ObjectMapper();    mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);    mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);    serializer.setObjectMapper(mapper);    return serializer;  }}

d.创建entity实体类

public class User implements Serializable {  private int id;  private String userName;  private String userPwd;  public User(){}  public User(int id, String userName, String userPwd) {    this.id = id;    this.userName = userName;    this.userPwd = userPwd;  }  public int getId() {    return id;  }  public void setId(int id) {    this.id = id;  }  public String getUserName() {    return userName;  }  public void setUserName(String userName) {    this.userName = userName;  }  public String getUserPwd() {    return userPwd;  }  public void setUserPwd(String userPwd) {    this.userPwd = userPwd;  }}

e.创建Service

@Servicepublic class UserService {  //查询:先查缓存是是否有,有则直接取缓存中数据,没有则运行方法中的代码并缓存  @Cacheable(value = "userCache", key = "'user:' + #userId")  public User getUser(int userId) {    System.out.println("执行此方法,说明没有缓存");    return new User(userId, "用户名(get)_" + userId, "密码_" + userId);  }  //添加:运行方法中的代码并缓存  @CachePut(value = "userCache", key = "'user:' + #user.id")  public User addUser(User user){    int userId = user.getId();    System.out.println("添加缓存");    return new User(userId, "用户名(add)_" + userId, "密码_" + userId);  }  //删除:删除缓存  @CacheEvict(value = "userCache", key = "'user:' + #userId")  public boolean deleteUser(int userId){    System.out.println("删除缓存");    return true;  }  @Cacheable(value = "common", key = "'common:user:' + #userId")  public User getCommonUser(int userId) {    System.out.println("执行此方法,说明没有缓存(测试公共配置是否生效)");    return new User(userId, "用户名(common)_" + userId, "密码_" + userId);  }}

f.创建Controller

@RestController@RequestMapping("/user")public class UserController {  @Resource  private UserService userService;  @RequestMapping("/getUser")  public User getUser(int userId) {    return userService.getUser(userId);  }  @RequestMapping("/addUser")  public User addUser(User user){    return userService.addUser(user);  }  @RequestMapping("/deleteUser")  public boolean deleteUser(int userId){    return userService.deleteUser(userId);  }  @RequestMapping("/getCommonUser")  public User getCommonUser(int userId) {    return userService.getCommonUser(userId);  }}
@Controllerpublic class HomeController {  //默认页面  @RequestMapping("/")  public String login() {    return "test";  }}

g.在 templates 目录下,写书 test.html 页面

    test  

测试

关于"Spring Boot整合Spring Cache及Redis过程的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

缓存 配置 序列 用户 方式 系统 错误 最大 密码 方法 时间 用户名 篇文章 示例 过程 分析 整合 代码 对象 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 新华互联网科技学院 朗新科技与工业互联网 嘟嘟瓜互联网科技 亿账通互联网科技 碳银互联网科技有限公司 镁科技互联网资讯平台 中盈科技互联网信息有限公司 成都互联网科技公司100强 南山科技园互联网公司有哪些 浙江互联网科技研学营 互联网在线教育科技创业 特约风豹互联网科技为什么扣费 高科技互联网套路 2021互联网科技公司排名 梅州GM互联网络科技有限公司 2021世界互联网领先科技成果发布 互联网时代科技型公司的机会 广西泛欧互联网科技有限公司 10位科技互联网大佬 互联网科技金融 内蒙古九一互联网科技 互联网科技的全部知识 中科明德北京互联网科技 国大互联网教育科技有限公司薪资 福仕德教育科技互联网 求路客互联网科技电话 互联网科技大会大佬 科技美学互联网 艺术 恒生科技互联网指数十大成分股
0