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

  • 相关阅读:
    python SocketServer
    python Socket网络编程 基础
    Kali 2017 使用SSH进行远程登录 设置 ssh 开机自启动
    用 python 的生成器制作数据传输进度条
    Markdown 语法的简要规则
    初学python之 面向对象
    windows和linux打印树状目录结构
    初学python之生成器
    初学 python 之 模拟sql语句实现对员工表格的增删改查
    使用wifite破解路由器密码
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5975536.html
Copyright © 2011-2022 走看看