在Spring Boot微服务使用RedisTemplate操作Redis集群

这篇具有很好参考价值的文章主要介绍了在Spring Boot微服务使用RedisTemplate操作Redis集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录:442

场景:在Spring Boot微服务使用RedisTemplate操作Redis集群的缓存和队列等数据类型。

版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5。

1.微服务中配置Redis信息

1.1在pom.xml添加依赖

pom.xml文件:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
  <version>2.6.3</version>
</dependency>

解析:spring-boot-starter-data-redis和spring-boot版本保持一致。

1.2在application.yml中配置Redis集群信息

(1)application.yml配置内容

spring:
  redis:
    cluster:
      nodes:
        - 192.168.19.161:27001
        - 192.168.19.161:27002
        - 192.168.19.162:27001
        - 192.168.19.162:27002
        - 192.168.19.163:27001
        - 192.168.19.163:27002
    password: demo12345678
    timeout: 60000

(2)解析

配置内容来源。

jar包:spring-boot-autoconfigure-2.6.3.jar。

类:org.springframework.boot.autoconfigure.data.redis.RedisProperties。

当引入spring-boot-starter时,此包已经引入。

当需要配置集群其它信息时,在RedisProperties类中查找并配置到application.yml就能生效。

1.3加载简要逻辑

Spring Boot微服务在启动时,自动注解机制会读取application.yml的配置信息注入到RedisProperties对象的对应属性。因此,在Spring环境中就能取到Redis集群的配置信息。

Spring从RedisProperties对象中取配置注入到RedisTemplate客户端中。因此,RedisTemplate客户端就能对Redis集群做增、删、改、查等操作。

2.配置RedisTemplate

RedisTemplate是springframework框架中封装的操作Redis的客户端。

类全称:org.springframework.data.redis.core.RedisTemplate

2.1配置RedisTemplate

@Configuration
public class RedisConfig {
  @Bean("redisTemplate")
  public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
      // 1.创建RedisTemplate对象
      RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
      // 2.加载Redis配置
      redisTemplate.setConnectionFactory(lettuceConnectionFactory);
      // 3.配置key序列化
      RedisSerializer<?> stringRedisSerializer = new StringRedisSerializer();
      redisTemplate.setKeySerializer(stringRedisSerializer);
      redisTemplate.setHashKeySerializer(stringRedisSerializer);
      // 4.配置Value序列化
      Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
      ObjectMapper objMapper = new ObjectMapper();
      objMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
      objMapper.activateDefaultTyping(objMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
      jackson2JsonRedisSerializer.setObjectMapper(objMapper);
      redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
      redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
      // 5.初始化RedisTemplate
      redisTemplate.afterPropertiesSet();
      return redisTemplate;
  }
}

2.2解析

配置RedisTemplate后,在Spring环境中,可以使用@Autowired注解注入RedisTemplate实例操作Redis集群。也可以使用cn.hutool.extra.spring.SpringUtil工具等从Spring 中获取RedisTemplate实例操作Redis集群。

3.使用@Autowired注入RedisTemplate的方式操作Redis集群

3.1简要说明

使用@Autowired注入RedisTemplate,操作Redis集群的增、查、改、删等操作。

3.2操作示例

@RestController
@RequestMapping("/hub/example/operateCluster")
@Slf4j
public class OperateClusterController {
  @Autowired
  private RedisTemplate redisTemplate;
  /**
   * 注入方式使用RedisTemplate
   */
  @GetMapping("/f01_01")
  public Object f01_01() {
      log.info("RedisTemplate操作Redis集群开始...");
      // 1.增
      redisTemplate.boundValueOps("D:2023060801:01").set("浙江-杭州");
      // 2.查
      Object result01 = redisTemplate.boundValueOps("D:2023060801:01").get();
      log.info("查询 D:2023060801:01 = " + result01.toString());
      // 3.改
      redisTemplate.boundValueOps("D:2023060801:01").set("浙江-宁波");
      result01 = redisTemplate.boundValueOps("D:2023060801:01").get();
      log.info("修改后,查询 D:2023060801:01 = " + result01.toString());
      // 4.删
      long time = 5000;
      log.info("{}秒后,删除D:2023060801:01.",time/1000);
      ThreadUtil.sleep(time);
      redisTemplate.delete("D:2023060801:01");
      // 5.1设置超时(方式一)
      redisTemplate.boundValueOps("D:2023060801:02").set("浙江-杭州");
      redisTemplate.expire("D:2023060801:02", 5, TimeUnit.MINUTES);
      // 5.2设置超时(方式二)
      redisTemplate.boundValueOps("D:2023060801:03").set("浙江-宁波", 5, TimeUnit.MINUTES);
      log.info("RedisTemplate操作Redis集群结束...");
      return "执行成功";
  }
}

3.3测试验证

使用Postman测试。

请求RUL:http://127.0.0.1:18205/hub-205-redis/hub/example/operateCluster/f01_01

4.使用SpringUtil从Spring中获取RedisTemplate的方式操作Redis集群

4.1简要说明

使用SpringUtil从Spring中获取RedisTemplate的方式,操作Redis集群的增、查、改、删等操作。

jar包:hutool-all-5.8.12.jar。

类:cn.hutool.extra.spring.SpringUtil

4.2操作示例

@RestController
@RequestMapping("/hub/example/operateCluster")
@Slf4j
public class OperateClusterController {
  @Autowired
  private RedisTemplate redisTemplate;
  /**
   * 使用工具获取RedisTemplate
   */
  @GetMapping("/f01_02")
  public Object f01_02() {
      log.info("RedisTemplate操作Redis集群开始...");
      RedisTemplate template = SpringUtil.getBean("redisTemplate");
      // 1.增
      template.boundValueOps("D:2023060801:04").set("浙江-杭州");
      // 2.查
      Object result01 = template.boundValueOps("D:2023060801:04").get();
      log.info("查询 D:2023060801:04 = " + result01.toString());
      // 3.改
      template.boundValueOps("D:2023060801:04").set("浙江-宁波");
      result01 = template.boundValueOps("D:2023060801:04").get();
      log.info("修改后,查询 D:2023060801:04 = " + result01.toString());
      // 4.删
      long time = 5000;
      log.info("{}秒后,删除D:2023060801:04.",time/1000);
      ThreadUtil.sleep(time);
      template.delete("D:2023060801:04");
      // 5.1设置超时(方式一)
      template.boundValueOps("D:2023060801:05").set("浙江-杭州");
      template.expire("D:2023060801:05", 5, TimeUnit.MINUTES);
      // 5.2设置超时(方式二)
      template.boundValueOps("D:2023060801:06").set("浙江-宁波", 10, TimeUnit.MINUTES);
      log.info("RedisTemplate操作Redis集群结束...");
      return "执行成功";
  }
}

4.3测试验证

使用Postman测试。

请求RUL:http://127.0.0.1:18205/hub-205-redis/hub/example/operateCluster/f01_02

5.小结

使用RedisTemplate操作Redis集群和Redis单机版两种场景。

差异:在application.yml配置中,使用集群时配置节点使用spring.redis.cluster.nodes配置IP和端口;单机版时,使用spring.redis.host配置IP和使用spring.redis.port配置端口。

共同:其它方面基本相同。

以上,感谢。

2023年6月8日文章来源地址https://www.toymoban.com/news/detail-525244.html

到了这里,关于在Spring Boot微服务使用RedisTemplate操作Redis集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Spring Boot微服务集成JedisCluster操作Redis集群

    记录 :448 场景 :在Spring Boot微服务使用JedisCluster操作Redis集群的缓存和队列等数据类型。 版本 :JDK 1.8,Spring Boot 2.6.3,redis-6.2.5,jedis-3.7.1。 1.微服务中 配置Redis信息 1.1在pom.xml添加依赖 pom.xml文件: 解析:在Spring Boot中默认集成jedis,使用无需加版本号,本例版本3.7.1是Spring 

    2024年02月09日
    浏览(49)
  • Redis关于Hash类型数据的操作,使用redisTemplate

    因为在redis的Hash数据类型里,有内层外层两个key,而且有内层外层两个map集合,所以暂时先称外层key为大key,内层key为小key,外层map为大map,内层map为小map,内层value值为value。 1.根据大key和小key还有value的值,设置一个value: 2.根据大key和小key获取到value值: 3.根据大key获取小

    2024年02月11日
    浏览(41)
  • Spring Boot 中的 Redis 数据操作配置和使用

    Redis(Remote Dictionary Server)是一种高性能的开源内存数据库,用于缓存、消息队列、会话管理和数据存储。在Spring Boot应用程序中,Redis被广泛用于各种用例,包括缓存、持久性存储和分布式锁。本文将探讨如何在Spring Boot中配置和使用Redis,包括数据操作和常见用例。 要在S

    2024年02月07日
    浏览(42)
  • 使用Spring Boot操作Redis、ES、MongoDB举例

    在Spring Boot应用程序中操作Redis通常涉及到使用Spring Data Redis,这是一个提供简便方法来操作Redis的库。以下是一个基本示例,演示如何在Spring Boot应用程序中集成和使用Redis: 步骤 1: 添加依赖项 首先,在你的 pom.xml 文件中添加Spring Data Redis的依赖项。 步骤 2: 配置Redis 在你的

    2024年01月25日
    浏览(40)
  • Spring Boot 中的 Redis 的数据操作配置和使用

    Redis 是一种高性能的 NoSQL 数据库,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合。Redis 还提供了丰富的命令,可以对数据进行快速的 CRUD 操作。Spring Boot 是一个基于 Spring 的快速开发框架,它提供了对 Redis 的集成支持。在本文中,我们将介绍如何在 Spri

    2024年02月11日
    浏览(51)
  • 【微服务部署】十、使用Docker Compose搭建高可用Redis集群

      现如今,业务系统对于缓存Redis的依赖似乎是必不可少的,我们可以在各种各样的系统中看到Redis的身影。考虑到系统运行的稳定性,Redis的应用和MySQL数据库一样需要做到高可用部署。 一、Redis 的多种高可用方案 常见的Redis的高可用方案有以下几种: Redis Replication(主从

    2024年02月07日
    浏览(44)
  • 在Spring Boot微服务使用jasypt-spring-boot加密和解密yml配置文件

    记录 :424 场景 :在Spring Boot微服务,使用jasypt-spring-boot加密和解密yml配置文件中的配置信息。 版本 :JDK 1.8,Spring Boot 2.6.3,jasypt-1.9.3,jasypt-spring-boot-2.1.2, jasypt-spring-boot-3.0.5。 开源地址 :https://github.com/ulisesbocchio/jasypt-spring-boot 1.在Spring Boot微服务使用jasypt-spring-boot-3.0.5版本

    2024年02月09日
    浏览(70)
  • Redis哨兵集群搭建及RedisTemplate的哨兵模式配置详解

    本文详细介绍了Redis哨兵集群的原理、架构和工作流程,包括哨兵的功能作用、故障恢复机制、选举新的master等内容。同时,提供了哨兵集群架构示意图和实例准备、配置、启动、测试的步骤。此外,还介绍了如何在Spring的RedisTemplate中配置哨兵模式,实现Redis主从集群的自动切换和节点感知。

    2024年02月14日
    浏览(47)
  • Spring boot 操作 Redis

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 专栏 描述 Java项目实战 介绍Java组件安装、使用;手写框架等 Aws服务器实战 Aws Linux服务器上操作nginx、git、JDK、Vue Jav

    2024年03月20日
    浏览(52)
  • 【Java Web】利用Spring整合Redis,配置RedisTemplate

    1. 在config中加入RedisConfig配置类 2. 写个测试类测试一下 3. 注意事项 Redis不满足事务的原子性,原子性是指事务要么被全部执行,要么都不执行。但是Redis不支持回滚,就可能会出现有些语句执行成功,有些执行失败,因此具备原子性; Redis事务的三个阶段: 开始事务 命令入

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包