1. 引入依赖

首先需要在 pom.xml 文件中引入 SpringBoot 和 redis 的依赖,以及 jedis 和 commons-pool2 的依赖:

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

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.4.1</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.9.0</version>
</dependency>
  1. 配置 Redis

在 application.properties 文件中配置 Redis:

# Redis 连接配置
spring.redis.sentinel.master=master
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
spring.redis.password=
spring.redis.database=0
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-wait=-1
spring.redis.timeout=5000

其中:

  • spring.redis.sentinel.master:指定 Redis 主节点的名称;
  • spring.redis.sentinel.nodes:指定 Redis 哨兵节点的地址;
  • spring.redis.password:Redis 认证密码;
  • spring.redis.database:Redis 数据库编号;
  • spring.redis.pool.max-active:连接池最大连接数;
  • spring.redis.pool.max-idle:连接池最大空闲连接数;
  • spring.redis.pool.min-idle:连接池最小空闲连接数;
  • spring.redis.pool.max-wait:连接池最大等待时间(毫秒);
  • spring.redis.timeout:Redis 操作超时时间(毫秒)。
  1. 创建 Redis 连接池

在 Spring 配置文件中创建 Redis 连接池:

@Configuration
public class RedisConfig {

    @Value('${spring.redis.sentinel.master}')
    private String masterName;

    @Value('${spring.redis.sentinel.nodes}')
    private String sentinelNodes;

    @Value('${spring.redis.password}')
    private String password;

    @Value('${spring.redis.pool.max-active}')
    private int maxActive;

    @Value('${spring.redis.pool.max-idle}')
    private int maxIdle;

    @Value('${spring.redis.pool.min-idle}')
    private int minIdle;

    @Value('${spring.redis.pool.max-wait}')
    private long maxWait;

    @Bean
    public JedisPoolConfig jedisPoolConfig() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(maxActive);
        poolConfig.setMaxIdle(maxIdle);
        poolConfig.setMinIdle(minIdle);
        poolConfig.setMaxWaitMillis(maxWait);
        poolConfig.setTestOnBorrow(true);
        poolConfig.setTestOnReturn(true);
        poolConfig.setTestWhileIdle(true);
        return poolConfig;
    }

    @Bean
    public JedisSentinelPool jedisSentinelPool(JedisPoolConfig jedisPoolConfig) {
        Set<String> sentinelSet = new HashSet<>(Arrays.asList(sentinelNodes.split(',')));
        return new JedisSentinelPool(masterName, sentinelSet, jedisPoolConfig, password);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(JedisSentinelPool jedisSentinelPool) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(jedisSentinelPool);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }

}

其中:

  • jedisPoolConfig() 方法创建 Jedis 连接池的配置对象;
  • jedisSentinelPool() 方法创建 Jedis Sentinel 连接池,并注入 jedisPoolConfig() 方法返回的连接池配置对象;
  • redisTemplate() 方法创建 RedisTemplate 对象,并注入 jedisSentinelPool() 方法返回的 Jedis Sentinel 连接池对象,同时设置键和值的序列化器为 StringRedisSerializer 和 GenericJackson2JsonRedisSerializer。
  1. 使用 RedisTemplate 操作 Redis

在代码中使用 RedisTemplate 对象操作 Redis:

@Autowired
private RedisTemplate<String, Object> redisTemplate;

// 设置键和值
redisTemplate.opsForValue().set('key', 'value');

// 获取值
Object value = redisTemplate.opsForValue().get('key');

// 删除键
redisTemplate.delete('key');

以上代码演示了 RedisTemplate 对象的使用方法,可以根据实际需求进行更多操作。

总结

本文介绍了如何使用 SpringBoot 和 redis 哨兵模式、连接池方式来操作 Redis,其中包括引入依赖、配置 Redis、创建 Redis 连接池和使用 RedisTemplate 对象操作 Redis。通过本文的学习,读者可以了解到如何使用 SpringBoot 进行 Redis 开发,并掌握 redis 哨兵模式、连接池方式的实现方法。

SpringBoot 集成 Redis 哨兵模式连接池实现

原文地址: https://www.cveoy.top/t/topic/nMFl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录