集成 Springboot

依赖

Jedis 依赖

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.7.1</version>
</dependency>

全部依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 为什么要引入它?https://blog.csdn.net/liangjiabao5555/article/details/104062932 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
 
<!-- test -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

application.yml

server:
  port: 8080
 
redis:
  database: 0
  host: localhost
  port: 6379
  password: 
  max-total: 8   # 最大连接数据库连接数
  max-idle: 8     # 最大等待连接中的数量
  min-idle: 0     # 最小等待连接中的数量
  max-wait-millis: 3000  # 最大建立连接等待时间
 
logging:
  level:
    root: info

配置类

新增 RedisConfig 配置类,将 application.yml 与 Redis 相关的值注入到 RedisConfig

@Data
@Configuration
@ConfigurationProperties(prefix = "redis")
public class RedisConfig {
 
    /**
     * 数据库序号
     */
    private String database;
 
    /**
     * 地址
     */
    private String host;
 
    /**
     * 端口
     */
    private int port;
 
    /**
     * 密码
     */
    private String password;
 
    /**
     * 最大连接数据库连接数
     */
    private int maxTotal;
 
    /**
     * 最大等待连接中的数量
     */
    private int maxIdle;
 
    /**
     * 最小等待连接中的数量
     */
    private int minIdle;
 
    /**
     * 最大建立连接等待时间
     */
    private int maxWaitMillis;
 
}

连接池

通过实现 InitializingBean 接口的 afterPropertiesSet() 进行 Jedis 连接池的初始化

@Component
public class JedisPoolWrapper implements InitializingBean {
 
    @Autowired
    private RedisConfig redisConfig;
 
    /** Jedis连接池 */
    private JedisPool jedisPool = null;
 
    private final static Integer TIMEOUT = 2000;
 
    /**
     * 初始化Bean方法
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(redisConfig.getMaxTotal());
            config.setMaxIdle(redisConfig.getMaxIdle());
            config.setMinIdle(redisConfig.getMinIdle());
            config.setMaxWaitMillis(redisConfig.getMaxWaitMillis());
 
            this.jedisPool = new JedisPool(config, redisConfig.getHost(), redisConfig.getPort(), TIMEOUT, redisConfig.getPassword());
        } catch (Exception e) {
            throw new Exception("Fail to initialize jedis pool");
        }
    }
 
    /**
     * 从资源池中获取{@link Jedis}
     *
     * @return {@link Jedis}
     */
    public Jedis getJedis() {
        return this.jedisPool.getResource();
    }
}

测试类

@Slf4j
@SpringBootTest
public class JedisTest {
 
    @Autowired
    private JedisPoolWrapper jedisPoolWrapper;
 
    @Test
    public void jedisTest() {
        Jedis jedis = jedisPoolWrapper.getJedis();
        jedis.set("a", "abc");
        log.info(jedis.get("a"));
    }
}

参考链接