Springboot整合redis集群相关配置详解

养淇
2023-12-01

springboot整合redis

官方配置

# common spring boot settings
spring.redis.database=
spring.redis.host=
spring.redis.port=
spring.redis.password=
spring.redis.ssl=
spring.redis.timeout=
spring.redis.cluster.nodes=
spring.redis.sentinel.master=
spring.redis.sentinel.nodes=
# Redisson settings
#path to config - redisson.yaml
spring.redis.redisson.config=classpath:redisson.yaml

以上是官方的配置:
开始整合
注:redis集群创建相关请自行百度

1 引入starter
测试所用版本

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

2 在yaml中完成自定义属性配置

 使用jedis连接池:
 spring:
  redis:
    ##redis 单机环境配置 # 主从配置与单机相同
#    host: 127.0.0.1
#    port: 6379
    password: 
    database: 0 # 连接哪个数据库
    ssl: false #启用SSL终端识别
    ##redis 集群环境配置
    cluster:
      nodes: 127.0.0.1:6601,127.0.0.1:6602,127.0.0.1:6603,127.0.0.1:6701,127.0.0.1:6702,127.0.0.0:6703
      commandTimeout: 5000  #设置命令的执行时间,如果超过这个时间,则报错;
      max-redirects: 3  # 获取失败 最大重定向次数
#    sentinel: #配置哨兵
#      nodes: # 节点
#      master: # 主
    jedis:
      pool:
        max-active: 300 #连接池最大连接数
        max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 100 #最大空闲连接
        min-idle: 20 #连接池的最小空闲连接
    timeout: 6000s #连接超时时间
//注入配置信息:
@Configuration
public class RedisConfig {
   @Autowired
   private RedisConnectionFactory factory;
 
   @Bean
    public RedisTemplate redisTemplate() {
        RedisTemplate redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(factory);
        return redisTemplate;
    }
}

使用lettuce连接池:

lettuce:
      pool:
        max-active: 1000  #连接池最大连接数(使用负值表示没有限制)
        max-idle: 10 # 连接池中的最大空闲连接
        min-idle: 5 # 连接池中的最小空闲连接
        max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
 
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {    
    @Bean
    public RedisTemplate redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {
        RedisTemplate template = new RedisTemplate<>();
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

lettuce是spring data redis默认的连接池,推荐使用这种方式。

  • 1 相关单机和主从集群的配置是一样的,主从无哨兵的配置直接配置主节点即可。
  • 2 官方的介绍中主从集群是带有哨兵的模式的,上面的配置也有,配置哨兵的时候master配置要监控的主节点的名称即可。
  • 3 集群的配置cluster下配置即可,连接都可以完成,如果需要导入额外的配置请查询官网以及百度:链接: 点击进入spring官方配置.
    注:上面是通过配置文件直接加载,配置类加载请自行百度。
    3 使用
    StringRedisTemplate和RedisTemplate的区别
    StringRedisTemplate是RedisTemplate的子类,StringRedisTemplate中的问和value都是字符串,采用的序列化方案是StringRedisSerializer,而RedisTemplate则可以用来操作对象,RedisTemplate采用的序列化方案是JdkSerializationRedisSerializer。无论是StringRedisTemplate还是RedisTemplate,操作Redis的方法都是一致的.StringRedisTemplate和RedisTemplate都是通过opsForValue、opsForZSet或者opsForSet等方法首先获取一个操作对象,再使用该操作对象完成数据的读写。
    opsForValue():String数据操作
    opsForHash():hash数据操作
    opsForList():List数据操作
    opsForSet():Set数据操作

结束

 类似资料: