zoukankan      html  css  js  c++  java
  • 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
    ", 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多毫秒,速度有提高。

  • 相关阅读:
    关于tomcat
    java 判断字符串是否为数字(包含负数)
    poi
    (String)、toString、String.valueOf
    linux 运行jar包
    视图
    java 使进程停顿几秒
    linux_tomcat
    【HTML+CSS】七小时快速入门~~~~~~~
    关于CSS动画效果的图片展示
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5975536.html
Copyright © 2011-2022 走看看