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多毫秒,速度有提高。

  • 相关阅读:
    响应者链的事件传递过程
    事件的产生和传递
    UIView不接受触摸事件的三种情况
    利用UIActivityController调用ios系统自带的分享功能,实现微信发布多图的功能
    CALayer
    CATransition-转场动画
    iOS分类、延展和子类的区别
    ios如何普安短图片类型
    使用Google code + SVN进行多人开发
    搭建CppUnit错误总结
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5975536.html
Copyright © 2011-2022 走看看