Jedis(Java+Redis) Pool的使用

Posted 笨鸟居士的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jedis(Java+Redis) Pool的使用相关的知识,希望对你有一定的参考价值。

今天试了一下Jedis里连接池JedisPool的的使用。代码如下:

package com.myapp.jedis.pooldemo;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * Created by baidu on 16/10/18.
 */
public class TestPool {
    private static JedisPool pool = null;

    public static JedisPool getPool() {
        if (pool == null) {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(500);
            config.setMaxIdle(5);
            config.setMaxWaitMillis(1000*10);
            //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
            config.setTestOnBorrow(true);
            //new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
            pool = new JedisPool(config, "[ip]", 8379, 10000, "[auth]");

        }
        return pool;
    }

    public synchronized static Jedis getResource() {
        if (pool == null) {
            pool = getPool();
        }
        return pool.getResource();
    }

    // 返还到连接池
    // Deprecated
    // 换成用完之后, redis.close()
    /*
    public static void returnResource(Jedis redis) {
        if (redis != null) {
            pool.returnResource(redis);
        }
    }
    */

    public static void main(String[] args) {
        Jedis redis = null;
        int loop = 1;
        while (loop < 20) {
            try {
                long start = System.currentTimeMillis();
                redis = getResource();
                redis.set("k1", "v1");
                String ret = redis.get("k1");
                long end = System.currentTimeMillis();
                System.out.printf("Get ret from redis: %s with %d millis\n", ret, end-start);
            } finally {
                if (redis != null) {
                    redis.close();
                }
            }
            loop++;
        }
    }

}

其中,有个函数returnResource已经deprecated了,现在Jedis的close方法重写了,用Jedis.close来释放资源。

跑了20次,运行结果如下:

Get ret from redis: v1 with 564 millis
Get ret from redis: v1 with 235 millis
Get ret from redis: v1 with 225 millis
Get ret from redis: v1 with 214 millis
Get ret from redis: v1 with 210 millis
Get ret from redis: v1 with 232 millis
Get ret from redis: v1 with 209 millis
Get ret from redis: v1 with 211 millis
Get ret from redis: v1 with 239 millis
Get ret from redis: v1 with 207 millis
Get ret from redis: v1 with 215 millis
Get ret from redis: v1 with 223 millis
Get ret from redis: v1 with 291 millis
Get ret from redis: v1 with 220 millis
Get ret from redis: v1 with 214 millis
Get ret from redis: v1 with 219 millis
Get ret from redis: v1 with 257 millis
Get ret from redis: v1 with 214 millis
Get ret from redis: v1 with 211 millis

Process finished with exit code 0

可以看出,第一次500多毫秒,之后都是200多毫秒,速度有提高。

 

以上是关于Jedis(Java+Redis) Pool的使用的主要内容,如果未能解决你的问题,请参考以下文章

Java中使用Jedis操作Redis

Java中使用Jedis操作Redis

使用Jedis操作redis

redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

使用Jedis操作Redis

Java中使用Jedis操作Redis