SpringBoot + jedis3.0以下(redis的java版本的客户端)企业实战开发工具封装

添加依赖

加入redis依赖

        <!--springboot redis 依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!--jedis客户端-连接redis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

        <!-- spring2.X集成redis所需common-pool2,使用jedis必须依赖它-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.5.0</version>
        </dependency>

jedisPool 连接池管理jedis

客户端连接Redis使用的是TCP协议,直连的方式每次需要建立TCP连接,而连接池的方式是可以预先初始化好jedis连接,所以每次只需要从jedis连接池借用即可,而借用和归还操作是在本地进行的,只有少量的并发同步开销,远远小于新建TCP连接的开销,另外直连的方式无法限制jedis对象的个数,在极端情况下可能会造成连接泄露,而连接池的形式可以有效的保护和控制资源的使用。

配置连接池属性

properties文件

  #redis配置开始
  # Redis数据库索引(默认为0)
  spring.redis.database=0
  # Redis服务器地址
  spring.redis.host=127.0.0.1
  # Redis服务器连接端口
  spring.redis.port=6379
  # Redis服务器连接密码(默认为空)
  spring.redis.password=123456
  # 连接池最大连接数(使用负值表示没有限制)
  spring.redis.jedis.pool.max-active=1000
  # 连接池最大阻塞等待时间(使用负值表示没有限制)
  spring.redis.jedis.pool.max-wait=10000
  # 连接池中的最大空闲连接
  spring.redis.jedis.pool.max-idle=200
  # 连接池中的最小空闲连接
  spring.redis.jedis.pool.min-idle=0
  # 连接超时时间(毫秒)
  spring.redis.timeout=10000
  #redis配置结束
  spring.redis.block-when-exhausted=true

yml文件

spring:
  redis:
    # Redis数据库索引(默认为0)
    database: 0
    # Redis服务器地址
    host: 127.0.0.1
    # Redis服务器连接端口
    port: 6379
    # Redis服务器连接密码(默认为空)
    password: root
    jedis:
      pool:
        # 连接池最大连接数(使用负值表示没有限制)
        max-active: 1000
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: 1000
        # 连接池中的最大空闲连接
        max-idle: 200
        # 连接池中的最小空闲连接
        min-idle: 0
    # 连接超时时间(毫秒)
    timeout: 10000
    #redis配置结束
    block-when-exhausted: true

新建RedisConfig 配置连接池

配置类

@Configuration
public class RedisConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.timeout}")
    private int timeout;

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

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

    @Value("${spring.redis.jedis.pool.max-wait}")
    private long maxWaitMillis;

    @Value("${spring.redis.block-when-exhausted}")
    private boolean blockWhenExhausted;

    @Bean
    public JedisPool jedisPool() {

        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        // 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
        jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);
        // 是否启用pool的jmx管理功能, 默认true
        jedisPoolConfig.setJmxEnabled(true);
        return new JedisPool(jedisPoolConfig, host, port, timeout, password);

    }
}

使用方式

@Component
public class RedisUtil {
    @Autowired
    private JedisPool jedisPool;


    /**
     * 添加键值
     *
     * @param key
     * @param value
     * @return
     */
    public String setValue(String key, String value) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.set(key, value);
        jedis.close();
        return result;
    }

    public String getValue(String key) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.get(key);
        jedis.close();
        return result;
    }
}

注:采用该种方式一定确保jedis为3.0版本以下,3.0版本以上没有JedisPool ,可能是本人没找到,尝试了好久,有研究过的可以一试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名技术极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值