zoukankan      html  css  js  c++  java
  • Redis连接池

    package com.lee.utils;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    public final class RedisPool {
        //Redis服务器IP
        private static String ADDR = "127.0.0.1";
        //Redis的端口号
        private static Integer PORT = 6379;
        //访问密码
        private static String AUTH = "12345";
    
        //可用连接实例的最大数目,默认为8;
        //如果赋值为-1,则表示不限制,如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)
        private static Integer MAX_TOTAL = 1024;
        //控制一个pool最多有多少个状态为idle(空闲)的jedis实例,默认值是8
        private static Integer MAX_IDLE = 200;
        //等待可用连接的最大时间,单位是毫秒,默认值为-1,表示永不超时。
        //如果超过等待时间,则直接抛出JedisConnectionException
        private static Integer MAX_WAIT_MILLIS = 10000;
        private static Integer TIMEOUT = 10000;
        //在borrow(用)一个jedis实例时,是否提前进行validate(验证)操作;
        //如果为true,则得到的jedis实例均是可用的
        private static Boolean TEST_ON_BORROW = true;
        private  static JedisPool jedisPool = null;
    
        /**
         * 静态块,初始化Redis连接池
         */
        static {
            try {
                JedisPoolConfig config = new JedisPoolConfig();
            /*注意:
                在高版本的jedis jar包,比如本版本2.9.0,JedisPoolConfig没有setMaxActive和setMaxWait属性了
                这是因为高版本中官方废弃了此方法,用以下两个属性替换。
                maxActive  ==>  maxTotal
                maxWait==>  maxWaitMillis
             */
                config.setMaxTotal(MAX_TOTAL);
                config.setMaxIdle(MAX_IDLE);
                config.setMaxWaitMillis(MAX_WAIT_MILLIS);
                config.setTestOnBorrow(TEST_ON_BORROW);
                jedisPool = new JedisPool(config,ADDR,PORT,TIMEOUT,AUTH);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    
        /**
         * 获取Jedis实例
         * @return
         */
        public synchronized static Jedis getJedis(){
            try {
                if(jedisPool != null){
                    Jedis jedis = jedisPool.getResource();
                    return jedis;
                }else{
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        public static void returnResource(final Jedis jedis){
            //方法参数被声明为final,表示它是只读的。
            if(jedis!=null){
    //            jedisPool.returnResource(jedis);
                //jedis.close()取代jedisPool.returnResource(jedis)方法将3.0版本开始
                jedis.close();
            }
        }
    }

    main

    public static void main(String[] args) {
            RedisPool.getJedis().set("name","lee");
    //        RedisPool.getJedis().del("name");
            System.out.println("show:"+RedisPool.getJedis().get("name"));
        }

    非连接池连接

    public static void main(String[] args) {
            //连接本地的 Redis 服务
            Jedis jedis = new Jedis("127.0.0.1", 6379);
            //权限认证
            jedis.auth("12345");
            System.out.println("连接成功");
            //设置 redis 字符串数据
    //        jedis.set("test", "redis-test");
            // 获取存储的数据并输出
            System.out.println("redis 存储的字符串为: "+ jedis.get("test"));
    }
  • 相关阅读:
    Docker 基础 : 数据管理
    linux sudo 命令
    TeamCity : .NET Core 插件
    C# 文件下载之断点续传
    TeamCity : 配置 Build 过程
    TeamCity : Build 版本控制系统配置
    Git : SSH 协议服务器
    TeamCity : Build 基本配置
    C# 文件下载 : WinINet
    [翻译] TSMessages
  • 原文地址:https://www.cnblogs.com/GaoAnLee/p/10387680.html
Copyright © 2011-2022 走看看