RedisShardPoolUtil

java

浏览数:32

2019-1-13


java 操作redis工具类

package com.redis;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.jedis.SortingParams;

/**
 * 
 *备注:使用ShardedJedisPool
 * 切片链接池   
 *提交:qinxuewu
 *时间:2015年8月20日下午4:40:57
 *
 */

public class RedisShardPoolUtil {
    public  static ShardedJedisPool jedisPool ; //切片连接池
    static {
        try {
            List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
            shards.add( new JedisShardInfo("127.0.0.1",6379));
            //shards.add( new JedisShardInfo("192.168.56.102", 6379) );
            
            JedisPoolConfig config = new JedisPoolConfig();  
            //设置最大连接数
            config.setMaxTotal(300);
            //设置最大空闲数
            config.setMaxIdle(600);
            //设置超时时间
            config.setMaxWaitMillis(3000);
            // 在应用初始化的时候生成连接池
            jedisPool = new ShardedJedisPool(config, shards);
        } catch (Exception e) {
            e.printStackTrace();
        }
      }
    
    
    
    /**
     * 获取 redis链接
     * @return
     * 2017年9月13日
     */
    public static ShardedJedis getResource(){
           return jedisPool.getResource();
    }
    
    
    
     /**
       * 向缓存中设置字符串内容
       * 失败返回0  不覆盖 成功 返回1
       * @param key key
       * @param value value
       * @return
       * @throws Exception
       */
    public static long  setnax(String key,String value){
        ShardedJedis client=null;
        try {
            //从切片池中获取实例
            client = jedisPool.getResource();
          return client.setnx(key, value);
        } catch (Exception e) {
          e.printStackTrace();
        }finally{
            client.close();
        }
        return 0;
      }
    
     /** 
       * 向缓存中设置对象(自动把对象转换成json数据存储到缓层中)
       * @param key 
       * @param value
       * @return
       */
    public static long  setnx(String key,Object value){
        ShardedJedis jedis=null;
        try {
          String objectJson = JSON.toJSONString(value);
          jedis = jedisPool.getResource();
          return jedis.setnx(key, objectJson);
         
        } catch (Exception e) {
          e.printStackTrace();      
        }finally{
            jedis.close();
        }
        return 0;
      }
     
     /**
       * 删除缓存中得对象,根据key
       * @param key
       * @return
       */
    public static boolean del(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          jedis.del(key);
          return true;
        } catch (Exception e) {
          e.printStackTrace();
          return false;
        }finally{
            jedis.close();
        }
       
      }
    
    
    /**
       * 根据key 获取内容
       * @param key
       * @return
       */
    public static Object get(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          Object value = jedis.get(key);
          return value;
        } catch (Exception e) {
          e.printStackTrace();
          return false;
        }finally{
            jedis.close();
        }
       
      }
     
     
     /**
       * 根据key 获取对象
       * @param key
       * @return
       */
    public static <T> T get(String key,Class<T> clazz){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          String value = jedis.get(key);
          return JSON.parseObject(value, clazz);
        } catch (Exception e) {
          e.printStackTrace();
          return null;
        }finally{
            jedis.close();
        }
      }
     
     
     /***
      * 检查key是否存在
      * @param key
      * @return
      * true 存在
      * false 不存在
      */
    public static boolean  checkExists(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.exists(key); 
        } catch (Exception e) {
           e.printStackTrace();
            return false;
        }finally{
            jedis.close();
        }
        
    }
    
    
    /***
     * 往指定的key追加内容,key不在则添加key
     * @param key
     * @param value
     * @return
     */
    public static boolean appendStr(String key,String value){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          jedis.append(key, value);     
          return true;
        } catch (Exception e) {
           e.printStackTrace();
            return false;
        }finally{
            jedis.close();
        }
    }
    

    
    /***************************************hashes(哈希)类型*********************************************************/
    
    /**
     * 设置hash field 
     * 如果存在不会设置返回0
     * @param key
     * @param field
     * @param value
     * @return  成功返回1,失败  0
     */
    public static long hset(String key,String field,String value){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hset(key, field, value);    
        } catch (Exception e) {
           e.printStackTrace();
        
        }finally{
            jedis.close();
        }
        return 0;
        
    } 
    
    /**
     * hget取值(value)
     * @param key
     * @param field
     * @return
     */
    public static Object hget(String key,String field){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hget(key, field) ;
        } catch (Exception e) {
           e.printStackTrace();
            return null;
        }finally{
            jedis.close();
        }
    }
    
    /**
     * hmset 批量设置值
     * @param key
     * @param hashmap
     * @return 成功返回OK
     */
    public static String  hmset(String key,Map<String, String> hashmap){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hmset(key, hashmap);
        } catch (Exception e) {
           e.printStackTrace();  
        }finally{
            jedis.close();
        }
        return null;
    }
    
    /**
     * hmget 批量取值(value)
     * @param key
     * @param field
     * @return
     */
    public static Object hmget (String key,String...fields){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hmget(key, fields);       
        } catch (Exception e) {
           e.printStackTrace();
            return null;
        }finally{
            jedis.close();
        }
    }
    
    /**
     * @param key
     * @return 返回所有的key和value
     */
    public static Map<String, String> hgetall(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hgetAll(key);         
        } catch (Exception e) {
           e.printStackTrace();
            return null;
        }finally{
            jedis.close();
        }
    }
    
    /**
     * 指定自增,负数自减
     * @param key
     * @param field
     * @param value
     * @return
     */
    public static long hincrby(String key,String field,long value){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hincrBy(key, field, value) ;    
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }
    
    /***
     * 删除一个或多个哈希表
     * @param key
     * @param fields
     * @return
     */
    
    public static long hdel(String key,String...fields){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.hdel(key, fields);  
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    } 
    
    /***************************************list(列表)*********************************************************/
    
    
    
    /**
     * lpush 设置值 从头部压入一个元素
     * @param key
     * @param strings
     * @return 成功返回成员的数量  失败返回0
     */
    public static long  lpush(String key,String...strings){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.lpush(key, strings);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }
    
    /**
     * rpush 从尾部压入一个元素
     * @param key
     * @param strings
     * @return 成功返回成员的数量  失败返回0
     */
    public static long  rpush (String key,String...strings){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.rpush (key, strings);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }
    
    /**
     * list列表取值(lrange)
     * @param key
     * @param start
     * @param end
     * @return start=0  end=-1(代表从开始到结束)
     */
    public static Object lrange (String key,long start,long end){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.lrange(key, start, end);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }
    
    /**
     * 从头部删除元素,并返回删除元素
     * @param key
     * @return
     */
    public static String  lpop  (String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          
          return jedis.lpop(key);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return null;
     
    }
    
    /**
     * 根据下表获取元素
     * @param key
     * @param index
     * @return
     */
    public static String lindex(String key,int index){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.lindex(key, index);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return null;
    }  
    
    /**
     * 获取列表对应的长度
     * @param key
     * @param index
     * @return
     */
    public static long llen (String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.llen(key);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }  
    
    
    /***************************************set集合*********************************************************/
    
    /**
     * 向集合成添加一个或多个成员
     * @param key
     * @param members
     * @return
     */
    public static long sadd  (String key,String...members){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.sadd(key, members) ;
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }  
    
    /**
     * 获取集合的成员个数
     * @param key
     * @param index
     * @return
     */
    public static long scard(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.scard(key);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }  
    
    
    /**
     * 返回集合中的所有成员
     * @param key
     * @param index
     * @return
     */
    public static Set<String> smembers(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.smembers(key);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return null;
    }  
    
    /***************************************sorted set******************************************************/
    
    /**
     * 向有序集合中添加一个或多个成员,或者更新已存在成员的分数
     * @param key
     * @param scoreMembers
     * @return
     */
    public static long zadd (String key,Map<String, Double> scoreMembers){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.zadd(key, scoreMembers); 
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return 0;
    }  
    
    /***
     * 排序
     * @param key
     * @param sortingParameters
     * @return
     */
    public static  List<String> sort(String key,SortingParams sortingParameters){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          return jedis.sort(key, sortingParameters);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return null;
    }
    /***
     * 排序 从大到小
     * @param key
     * @param sortingParameters
     * @return
     */
    public static  List<String> sort(String key){
        ShardedJedis jedis=null;
        try {
          jedis = jedisPool.getResource();
          SortingParams sort=new SortingParams();
          sort.desc();
          return jedis.sort(key,sort);
        } catch (Exception e) {
           e.printStackTrace();
        }finally{
            jedis.close();
        }
        return null;
    }
}

相关推荐