JedisUtils 对jedis的封装 and RedisCacheManager 管理多个连接池

RedisCacheManager

import java.util.concurrent.ConcurrentHashMap;
import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;
@Service("redisCacheManager")// @Slf4jpublic class RedisCacheManager {  @Value("${redisdbtype}")  private String redisdbtype;    @Value("${redisdbnumber}")  private String redisdbnumber;    @Value("${host}")  private String host;  @Value("${port}")  private int port;  @Value("${timeout}")  private int timeout;  @Value("${passwords}")  private String passwords;    @Value("${maxtotal}")  private String maxtotal;  @Value("${maxidle}")  private String maxidle;  @Value("${minidle}")  private String minidle;  @Value("${maxwaitmillis}")  private String maxwaitmillis;  @Value("${testonborrow}")  private String testonborrow;  @Value("${testwhileidle}")  private String testwhileidle;    private static JedisPoolConfig poolConfig = null;    // 保存不同的数据库连接  private ConcurrentHashMap redisPoolMap = new ConcurrentHashMap();    public ConcurrentHashMap getRedisPoolMap() {    if (redisPoolMap.size() < 1) {      initConfig();      initPoolMap();    }    return redisPoolMap;  }    /**   * @Description:共享的poolconfig   * @return:void   */  private void initConfig() {    poolConfig = new JedisPoolConfig();    poolConfig.setTestOnBorrow(testwhileidle.equals("true") ? true : false);    poolConfig.setTestWhileIdle(testonborrow.equals("true") ? true : false);    poolConfig.setMaxIdle(Integer.parseInt(maxidle));    poolConfig.setMaxTotal(Integer.parseInt(maxtotal));    poolConfig.setMinIdle(Integer.parseInt(minidle));    poolConfig.setMaxWaitMillis(Integer.parseInt(maxwaitmillis));  }    private void initPoolMap() {    try {      if (null != redisdbtype && null != redisdbnumber) {        String[] dbs = redisdbtype.split(",");        String[] numbers = redisdbnumber.split(",");        for (int i = 0; i < dbs.length; i++) {          // 得到redis连接池对象          JedisPool jedisPool = new JedisPool(poolConfig, host, port, timeout, passwords);          // 存放不同redis数据库          redisPoolMap.put(dbs[i], new RedisCachePool(Integer.parseInt(numbers[i]), jedisPool));        }      }    } catch (Exception e) {      // log.error("redisCacheManager初始化失败!" + e.getLocalizedMessage());    }  }    /**   * @Description: 得到jedis连接   * @param dbtypeName   * @return:Jedis   */  public Jedis getResource(RedisDataBaseType dbtypeName) {    Jedis jedisResource = null;    RedisCachePool pool = redisPoolMap.get(dbtypeName.toString());    if (pool != null) {      jedisResource = pool.getResource();    }    return jedisResource;  }    /**   * @Description: 返回连接池   * @param dbtypeName   * @param jedis   * @return:void   */  public void returnResource(RedisDataBaseType dbtypeName, Jedis jedis) {    RedisCachePool pool = redisPoolMap.get(dbtypeName.toString());    if (pool != null)      pool.returnResource(jedis);  }}

JedisUtils

import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.exceptions.JedisException;
import java.util.List;import java.util.Map;
/** * @author Loger * Date: 2018-07-30 * TIme: 23:54 * Description : */public class JedisUtils {
    private static JedisPoolConfig config;
    private static JedisPool jedisPool;
    private static String password = "xxxxxxxxxx";
    static {        config = new JedisPoolConfig();        config.setMaxIdle(100);        config.setMaxIdle(10);        jedisPool = new JedisPool(config, "192.168.113.128", 6379);    }
    /**     * 获取jedis     *     * @return     */    public static Jedis getJedis() {        Jedis jedis = jedisPool.getResource();        jedis.auth(password);        return jedis;    }
    /**     * jedis放回连接池     *     * @param jedis     */    public static void close(Jedis jedis) {        //从源码可以分析得到,如果是使用连接池的形式,这个并非真正的close,而是把连接放回连接池中        if (jedis != null) {            jedis.close();        }    }
    /**     * get     *     * @param key     * @return     */    public static String get(String key) {        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.get(key);        } catch (Exception e) {            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        } finally {            close(jedis);        }    }
    /**     * set     *     * @param key     * @param value     * @return     */    public static void set(String key, String value) {        Jedis jedis = null;        try {            jedis = getJedis();            jedis.set(key, value);        } catch (Exception e) {            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        } finally {            close(jedis);        }    }
    /**     * set with expire milliseconds     *     * @param key     * @param value     * @param seconds     * @return     */    public static void set(String key, String value, long seconds) {        Jedis jedis = null;        try {            jedis = getJedis();            //* @param nxxx NX|XX, NX -- Only set the key if it does not already exist. XX -- Only set the key            //     *                     *          if it already exist.            //     *                     * @param expx EX|PX, expire time units: EX = seconds; PX = milliseconds            jedis.set(key, value, "NX", "EX", seconds);        } catch (Exception e) {            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        } finally {            close(jedis);        }    }

    public static Long incr(String key){        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.incr(key);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    public static void hset(String key,String field,String value){        Jedis jedis = null;        try {            jedis = getJedis();            jedis.hset(key,field,value);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    public static String hget(String key,String field){        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.hget(key,field);        }catch (Exception e){            e.printStackTrace();        }finally {            close(jedis);        }        return null;    }
    public static Map hgetAll(String key){        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.hgetAll(key);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    /**     *     * @param timeout 0表示永久 单位秒     * @param key key     * @return [key,value]     */    public static String blpop(int timeout,String key){        Jedis jedis = null;        try {            jedis = getJedis();            List list = jedis.blpop(timeout, key);            return list.get(1);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    public static String blpop(String key){        Jedis jedis = null;        try {            jedis = getJedis();            List list = jedis.blpop(0, key);            return list.get(1);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    public static void lpush(String key,String... value){        Jedis jedis = null;        try {            jedis = getJedis();            jedis.lpush(key,value);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }    }
    /**     *     * @param timeout 0表示永久 单位秒     * @param key key     * @return [key,value]     */    public static String brpop(int timeout,String key){        Jedis jedis = null;        try {            jedis = getJedis();            List list = jedis.brpop(timeout, key);            return list.get(1);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    public static String brpop(String key){        Jedis jedis = null;        try {            jedis = getJedis();            List list = jedis.brpop(0, key);            return list.get(1);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }finally {            close(jedis);        }    }
    public static void rpush(String key,String... value){        Jedis jedis = null;        try {            jedis = getJedis();            jedis.rpush(key,value);        }catch (Exception e){            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        }    }
    /**     * 获取key过期时间 -1表示永久 -2表示该key不存在     * @param key     * @return     */    public static long ttl(String key) {        Jedis jedis = null;        try {            jedis = getJedis();            return jedis.ttl(key);        } catch (Exception e) {            e.printStackTrace();            throw new JedisException(e.getMessage(),e);        } finally {            close(jedis);        }    }}

更多学习资料 请关注微信公众号

JedisUtils 对jedis的封装 and RedisCacheManager 管理多个连接池_第1张图片

 

 

你可能感兴趣的:(Redis,redis)