Redis连接池的Java写法

本文介绍如何在Java项目中使用Jedis库操作Redis数据库,包括Maven依赖引入及配置Redis连接池的方法。通过具体代码展示了如何初始化连接池、获取及归还Jedis实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


下一篇博文: 多种数据类型的 Jedis 存取
要使用 java 操作 redis,需要保证服务端已经安装了 redis 服务,并且本地项目已经有 java redis 驱动(jedis)

Maven 引入 Jedis 依赖

这个需要在中央仓库中自己去 copy

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

Redis 连接池

public final class RedisUtil {
    //IP 地址
    private static String ADDR = "127.0.0.1";
    //端口号
    private static int PORT = 6379;
    //redis 服务端密码
    private static String PWD = "123456";
    
    //可用连接实例最大数目,默认为 8,若赋值 -1,表示不被限制
    private static Integer MAX_TOTAL = 1024;
    //控制一个连接池最多有多少个状态为空闲的 jedis 实例,默认值为 8
    private static Integer MAX_IDLE = 200;
    
    //等待可用连接最大的等待时间,单位 ms,默认值 -1,表示永不超时,若等待超时抛出 JedisConnectionException
    private static Integer MAX_WAIT_MILLIS = 10000;
    //超时
    private static Integer TIMEOUT = 10000;
    
    //在用一个 jedis 实例时,是否提前进行 validate 操作,若结果为 true 则 jedis 实例可用
    private static Boolean TEST_ON_BORROW = true;
    
    //jedis 连接池
    private static JedisPool jedisPool = null;
    
    /**
     * 初始化 jedis 连接池的静态块,RedisPool 第一次类加载时执行,以后便不再执行
     */
    static {
        try {
            JedisPoolConfig conf = new JedisPoolConfig();
            /*
             * 高版本 jedis jar 中 JedisPoolConfig 没有 setMaxActive 和 setMaxWait 属性,因为官方在高版本			   * 中启用了此方法,用以下两个属性替换
             * maxActive ==> maxTotal
             * maxWait ==> maxWaitMillis
             */
            //设置连接实例最大数目
            conf.setMaxTotal(MAX_TOTAL);
            //设置最多多少空闲的 jedis 实例
            conf.setMaxIdle(MAX_IDLE);
            //设置等待可用连接的最大时间
            conf.setMaxWaitMillis(MAX_WAIT_MILLIS);
            //设置是否提前进行测试借用
            conf.setTestOnBorrow(TEST_ON_BORROW);
            
            //新建 jedis 连接池
            jedisPool = new JedisPool(conf, ADDR, PORT, TIMEOUT, PWD);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /*
     * 获取 jedis 实例来操作数据,每次使用完要将连接返回给连接池 jedis.close()
     * @return
     */
    public synchronized static Jedis getRedis() {
        try {
            if(jedisPool != null) {
                //获取 jedis 实例
                Jedis jedis = jedisPool.getResource();
                return jedis;
            }
            else{
                System.out.println("没有找到 Jedis 连接池!");
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    /*
     * 用来回收 Jedis 对象资源,用户需要用到此方法释放资源,否则一直占用资源
     * @param Jedis jedis
     */
    public synchronized static void returnJedis(Jedis jedis) {
        try {
            if(jedis != null) {
                //回收 jedis 对象资源
                jedisPool.returnResource(jedis);
                System.out.println("Jedis 被成功回收!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

下一篇博文:多种数据类型的 Jedis 存取

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

abcnull

您的打赏是我创作的动力之一

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

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

打赏作者

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

抵扣说明:

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

余额充值