4、Redis连接池的构建与测试

作者: CodeGroup | 来源:发表于2018-10-30 21:26 被阅读0次

    首先我们在我们的项目中新建一个 RedisPool
    代码如下:

    package com.mmall.common;
    
    import com.mmall.util.PropertiesUtil;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * @author Chakid
     * @since 2018-10-30 20:15
     */
    public class RedisPool {
        private static JedisPool pool; //jedis连接池
    
        //redis所在的IP
        private static String redisIp=PropertiesUtil.getProperty("redis.ip");
    
        //redis开放的端口
        private static Integer redisPort =Integer.parseInt(PropertiesUtil.getProperty("redis.port"));
    
        //jedis最大连接数
        private static Integer maxTotal= Integer.parseInt(PropertiesUtil.getProperty("redis.max.total","20"));
    
        //最大空闲连接数
        private static Integer maxIdle= Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","10"));
    
        //最小空闲连接数
        private static Integer minIdle= Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","2"));
    
        //从jedis连接池获取连接时,校验并返回可用的连接
        private static boolean testBorrow= Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));
    
        //把连接放回jedis连接池时,校验并返回可用的连接
        private static boolean testReturn= Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","true"));
    
    
        //初始化连接池
        private static void initPool(){
    
            JedisPoolConfig config = new JedisPoolConfig();
    
            //给config set相关值
            config.setMaxTotal(maxTotal);
            config.setMaxIdle(maxIdle);
            config.setMinIdle(minIdle);
            config.setTestOnBorrow(testBorrow);
            config.setTestOnReturn(testReturn);
    
            //连接耗尽时,是否阻塞,false会抛出异常,true直到阻塞超时,默认为true
            config.setBlockWhenExhausted(true);
    
            pool = new JedisPool(config,redisIp,redisPort,1000*2);
        }
    
    
        //实例化连接池
        static {
            initPool();
        }
    
        //从连接池中获取一个连接对象
        public static Jedis getJedis(){
            return pool.getResource();
        }
    
    
        //如果是一个损坏连接就放在BrokenResource
        public static void returnBrokenResource(Jedis jedis){
            pool.returnBrokenResource(jedis);
        }
    
        //将jedis放回连接池
        public static void returnResource(Jedis jedis){
            pool.returnResource(jedis);
        }
    
    
    
        //用main测试我们的连接
    
        public static void main(String[] args) {
            Jedis jedis = pool.getResource();
    
            jedis.set("chakidkey","chakidvalue");
    
            returnResource(jedis);
    
            pool.destroy();
    
            System.out.println("program is end~");
        }
    
    }
    
    

    然后由于我是把配置信息单独配置多出来,如果只是单独测试 Jedis的连接的话,把我下面的对应参数填到上面即可~

    #start redis config
    
    #redis所在服务器IP
    redis.ip=119.29.xx.xxx
    
    #redis的端口
    redis.port=6379
    
    #最大连接数
    redis.max.total=20
    
    #最大空闲连接数
    redis.max.idle=10
    
    #最小空闲连接数
    redis.min.idle=2
    
    #从jedis连接池获取连接时,校验并返回可用的连接
    redis.test.borrow=true
    
    #把连接放回jedis连接池时,校验并返回可用的连接 return设置为false的时候,在并发量高的时候可以提高我们的并发效率
    redis.test.return=false
    
    #end redis config
    

    相关代码的讲解都在注释中啦~
    测试代码写好之后,接下来就是测试我们的连接了:
    用Xshell连接我们的服务器,打开Redis服务


    image.png

    然后Xshell启动我们的连接客户端:

    image.png
    发现原本存在一些,我先把里面的删掉,执行:flushall
    image.png
    好,发现所以key都被我们清空了,接下来就要运行我们上面编写的代码,直接运行main函数即可~
    OK,执行完毕,来看看我们的redis里面有没有我们刚才加的数据吧~

    咦,发现数据已经加进去了,那么测试也就成功啦~


    image.png

    相关文章

      网友评论

        本文标题:4、Redis连接池的构建与测试

        本文链接:https://www.haomeiwen.com/subject/ibyntqtx.html