zoukankan      html  css  js  c++  java
  • shardedJedisPool工具类

    这里使用的是ShardedJedisPool,而不是RedisTemplate

    1、配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
        default-autowire="byName">
        
         <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
            <property name="maxTotal" value="${redis.pool.maxTotal}" />
            <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />
            <property name="maxIdle" value="${redis.pool.maxIdle}" />
            <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
        </bean>
        <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"  scope="singleton">
            <constructor-arg index="0" ref="jedisPoolConfig" />
            <constructor-arg index="1">
                <list>
                    <bean name="slave" class="redis.clients.jedis.JedisShardInfo">  
                        <constructor-arg index="0" value="${redis.slave.ip}" />  
                        <constructor-arg index="1" value="${redis.slave.port}" />  
                    </bean>  
                    <bean name="master" class="redis.clients.jedis.JedisShardInfo">   
                        <constructor-arg index="0" value="${redis.master.ip}" />   
                        <constructor-arg  index="1" value="${redis.master.port}"/>   
                    </bean>
                </list>
            </constructor-arg>
        </bean>
        <bean id="jedisConnectionFactory"
            class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
            <property name="hostName" value="${redis.master.ip}" />
            <property name="port" value="${redis.master.port}" />
            <property name="poolConfig" ref="jedisPoolConfig" />
        </bean>
        <!-- spring session 配置 -->
        <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
            <property name="maxInactiveIntervalInSeconds" value="1800"/>
            <property name="redisNamespace" value="ianbase" />
        </bean>
        <!--spring session 监听器-->
        <!-- 让Spring Session不再执行config命令 -->
        <util:constant static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/>
    </beans>

    2、序列化工具

    import java.io.ByteArrayInputStream;  
    import java.io.ByteArrayOutputStream;  
    import java.io.ObjectInputStream;  
    import java.io.ObjectOutputStream;  
      
    import org.slf4j.Logger;  
    import org.slf4j.LoggerFactory;  
    /**
     * <p>
     * Title:对象序列化和反序列化。
     */  
    public class SerializeUtil {  
      
        private static Logger LOG = LoggerFactory.getLogger(SerializeUtil.class);  
        /**  
         * 序列化
         *  
         * @param object  
         * @return byte[]
         */
        public static byte[] serialize(Object object) {  
            ObjectOutputStream oos = null;  
            ByteArrayOutputStream baos = null;
            if(object==null){
                return null;
            }
            try {  
                // 序列化  
                baos = new ByteArrayOutputStream();  
                oos = new ObjectOutputStream(baos);  
                oos.writeObject(object);  
                byte[] bytes = baos.toByteArray();  
                return bytes;  
            } catch (Exception e) {
                LOG.error("serialize error",e); 
            } finally {  
                try {  
                    if (oos != null) {  
                        oos.close();  
                    }  
                    if (baos != null) {  
                        baos.close();  
                    }  
                } catch (Exception e2) {
                    LOG.error("serialize close error",e2); 
                }  
            }  
            return null;  
        }  
        /**  
         * 序列化
         *  
         * @param byte[]  
         * @return object
         */
        public static Object deserialize(byte[] bytes) { 
            if(bytes==null){
                return null;
            }
            ByteArrayInputStream bais = null;  
            try {  
                // 反序列化  
                bais = new ByteArrayInputStream(bytes);  
                ObjectInputStream ois = new ObjectInputStream(bais);  
                return ois.readObject();  
            } catch (Exception e) { 
                LOG.error("unserialize error",e); 
            }  
            return null;  
        }  
      
    } 

    3、RedisClient

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import SerializeUtil;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.ShardedJedis;
    import redis.clients.jedis.ShardedJedisPipeline;
    import redis.clients.jedis.ShardedJedisPool;
    
    import java.nio.charset.Charset;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    /**
     * redis操作工具类
     */
    @SuppressWarnings("unchecked")
    @Component
    public class RedisClient {
        
        private static final Logger LOG = LoggerFactory.getLogger(ShardRedisClient.class);
        @Autowired
        private ShardedJedisPool    shardedJedisPool;
        
        /**
         * 字符集
         */
        private final Charset charset = Charset.forName("UTF-8");
        
        public String deserialize(byte[] bytes) {
            return (bytes == null ? null : new String(bytes, charset));
        }
    
        public byte[] serialize(String string) {
            return (string == null ? null : string.getBytes(charset));
        }
    
        /**
         * 设置单个值
         * 
         * @param key
         * @param value
         * @return
         */
        public boolean set(String key, String value) {
            boolean flag = false;
            ShardedJedis shardedJedis = shardedJedisPool.getResource();
            try {
                shardedJedis.set(key, value);
                flag=true;
            } catch (Exception e) {
                LOG.error("set error", e);
            } finally {
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }
            return flag;
        }
        /**
         * 批量设置设置
         * 
         * @param key
         * @param value
         * @return
         */
        public boolean setList(String key, String value) {
            boolean flag = false;
            ShardedJedis shardedJedis = shardedJedisPool.getResource();
            try {
                ShardedJedisPipeline shardedJedisPipeline=shardedJedis.pipelined();
                shardedJedisPipeline.set(key, value);
                shardedJedisPipeline.sync();
                flag=true;
            } catch (Exception e) {
                LOG.error("set error", e);
            } finally {
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }
            return flag;
        }
        /**
         * 设置单个值,并且设置过期时间
         * 
         * @param key
         * @param value
         * @param second
         * @return
         */
        public boolean set(String key, String value, int second) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.setex(key, second, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("set error.", ex);                
            } finally {
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
                
            }  
            return false;  
        }
        /**
         * 删除所有匹配的key
         * 
         * @param prefixKey
         * @return
         */
        public boolean delKesByPrefix(String prefixKey) {
            ShardedJedis jedis = null;
            Set<String> setResult = new HashSet<String>();
            try {
                jedis  = shardedJedisPool.getResource();
                Iterator<Jedis> jedisIterator = jedis.getAllShards().iterator();
                while(jedisIterator.hasNext()){
                    setResult = jedisIterator.next().keys(prefixKey+"*");
                }
                Iterator<String> it=setResult.iterator();
                while(it.hasNext()){
                    String key=it.next();
                    jedis.del(key);
                }
                return true; 
            } catch (Exception e) {
                LOG.error("getByPrefix error", e);
            }finally {
                if(jedis!=null){
                    jedis.close();
                }              
            }
            return false;
        }
        /**
         * 获取单个值
         * 
         * @param key
         * @return
         */
        public String get(String key) {
            String result = null;
            ShardedJedis shardedJedis = shardedJedisPool.getResource();
            if (shardedJedis == null) {
                return result;
            }
            try {
                result = shardedJedis.get(key);
            } catch (Exception e) {
                LOG.error("redis get error", e);
            } finally {
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }
            return result;
        }
        /**  
         * 删除HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @return 删除的记录数  
         */  
        public long del(String key) {  
            ShardedJedis shardedJedis = null;  
            long count = 0;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                count = shardedJedis.del(key);  
            } catch (Exception ex) {  
                LOG.error("hdel error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return count;  
        }
        /**  
         * 设置一个key的过期时间(单位:秒)  
         *   
         * @param key  
         *            key值  
         * @param seconds  
         *            多少秒后过期  
         * @return 1:设置了过期时间, 0:没有设置过期时间/不能设置过期时间  
         */  
        public long expire(String key, int seconds) {  
            if (key == null || key.equals("")) {  
                return 0;  
            }    
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.expire(key, seconds);  
            } catch (Exception ex) {  
                LOG.error("EXPIRE error[key=" + key + " seconds=" + seconds + "]" + ex.getMessage(), ex);   
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }  
            return 0;  
        } 
        /**  
         * 设置HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @param value  
         *            Json String or String value  
         * @return  
         */  
        public boolean hset( String key,String field, String value) {  
            if (value == null)  
                return false;  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.hset(key, field, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("hset error.", ex);  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }  
            return false;  
        }  
        /**  
         * 设置HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @param value  
         *            Json String or String value  
         * @return  
         */  
        public boolean hmset(String key, Map<String ,String> map ) {  
            if (map == null)  
                return false;  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.hmset(key, map);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("hmset error.", ex);  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return false;  
        }
        /**  
         * 设置HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @param value  
         *            Json String or String value  
         * @return  
         */  
        public boolean hmsetObject(String key, Map<String ,Object> map ) {  
            if (map == null)  
                return false;  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                final Map<byte[], byte[]> hashes = new LinkedHashMap<byte[], byte[]>(map.size());
    
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    hashes.put(serialize(entry.getKey()), SerializeUtil.serialize(entry.getValue()));
                }
                shardedJedis.hmset(serialize(key), hashes);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("hmset error.", ex);  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return false;  
        }
        
        /**  
         * 设置HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @param value  
         *            Json String or String value  
         * @return  
         */  
        public <T> boolean hmsetObjectClass(String key, Map<String ,T> map) {  
            if (map == null)  
                return false;  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                final Map<byte[], byte[]> hashes = new LinkedHashMap<byte[], byte[]>(map.size());
    
                for (Map.Entry<String, T> entry : map.entrySet()) {
                    hashes.put(serialize(entry.getKey()), SerializeUtil.serialize(entry.getValue()));
                }
                shardedJedis.hmset(serialize(key), hashes);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("hmset error.", ex);  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return false;  
        }
        
        /**  
         * 设置HashSet对象 ,并且设置过期时间 
         *  
         * @param key  
         *            键值  
         * @param map  
         *              
         * @param seconds  
         *            过期时间,单位秒。               
         * @return  
         */  
        public boolean hmset(String key, Map<String ,String> map,int seconds ) { 
            if(this.hmset(key, map)){
                return this.expire(key, seconds)==1;
            }                  
            return false;  
        }
      
        /**  
         * 获得HashSet对象  
         *   
         * @param key  
         *            键值  
         * @param field  
         *            属性             
         * @return Json String or String value  
         */  
        public String hget(String key, String field) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.hget(key, field);  
            } catch (Exception ex) {  
                LOG.error("hget error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return null;  
        }
        /**  
         * 获得HashSet对象  
         *   
         * @param key  
         *            键值  
         * @param field  
         *            属性             
         * @return Json String or String value  
         */  
        public Object hgetObject(String key, String field) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource(); 
                byte[] value=shardedJedis.hget(serialize(key), serialize(field));
                return SerializeUtil.deserialize(value);  
            } catch (Exception ex) {  
                LOG.error("hget error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }  
            return null;  
        }
        /**  
         * 获得HashSet对象  
         *  
         * @param key  
         *            键值  
         * @return Json String or String value  
         */  
        public Map<String,Object> hgetMap(String key) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                Map<byte[], byte[]> entries =shardedJedis.hgetAll(serialize(key));
                Map<String,Object> map = new LinkedHashMap<String,Object>(entries.size());
    
                for (Map.Entry<byte[], byte[]> entry : entries.entrySet()) {
                    map.put(deserialize(entry.getKey()), SerializeUtil.deserialize(entry.getValue()));
                }
                return map;
            } catch (Exception ex) {  
                LOG.error("hgetAll error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return null;  
        }
      
        /**
         * 获得缓存的Map,指定class
         *
         * @param key
         * @return
         */
        public <T> Map<String, T> hgetMapClass(Class<T> t,String key) {
             ShardedJedis shardedJedis = null;  
             try {  
                 shardedJedis = shardedJedisPool.getResource();  
                 Map<byte[], byte[]> entries =shardedJedis.hgetAll(serialize(key));
                 Map map = new LinkedHashMap<String,Object>(entries.size());
    
                 for (Map.Entry<byte[], byte[]> entry : entries.entrySet()) {
                     map.put(deserialize(entry.getKey()), t.cast(SerializeUtil.deserialize(entry.getValue())));
                 }
                 return map;
             } catch (Exception ex) {  
                 LOG.error("hgetAll error.", ex);
             } finally {  
                 if(shardedJedis!=null){
                     shardedJedis.close(); 
                 } 
             }
            return null;  
        }
        /**  
         * 删除HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性值  
         * @return 删除的记录数  
         */  
        public long hdel(String key,String field) {  
            ShardedJedis shardedJedis = null;  
            long count = 0;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                count = shardedJedis.hdel(key,field);  
            } catch (Exception ex) {  
                LOG.error("hdel error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return count;  
        }  
      
        /**  
         * 删除HashSet对象  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @return 删除的记录数  
         */  
        public long hdel(String key, String... field) {  
            ShardedJedis shardedJedis = null;  
            long count = 0;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                count = shardedJedis.hdel(key,field);  
            } catch (Exception ex) {  
                LOG.error("hdel error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return count;  
        }  
      
        /**  
         * 判断key是否存在  
         *  
         * @param key  
         *            键值  
         * @param field  
         *            属性  
         * @return  
         */  
        public boolean hexists(String key, String field) {  
            ShardedJedis shardedJedis = null;  
            boolean isExist = false;  
            try {  
                shardedJedis = shardedJedisPool.getResource(); 
                isExist = shardedJedis.hexists(key,field);  
            } catch (Exception ex) {  
                LOG.error("hexists error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return isExist;  
        }    
        
        /**  
         * 判断key是否存在  
         *  
         * @param key  
         *            键值  
         * @return  
         */  
        public boolean exists(String key) {  
            ShardedJedis shardedJedis = null;  
            boolean isExist = false;  
            try {  
                shardedJedis = shardedJedisPool.getResource(); 
                isExist = shardedJedis.exists(key); 
            } catch (Exception ex) {  
                LOG.error("hexists error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return isExist;  
        }
      
        /**  
         * 返回 key 指定的哈希集中所有字段的value值  
         *  
         * @param key  
         * @return  
         */  
      
        public List<String> hvals(String key) {  
            ShardedJedis shardedJedis = null;  
            List<String> retList = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                retList = shardedJedis.hvals(key);  
            } catch (Exception ex) {  
                LOG.error("hvals error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return retList;  
        }
        /**  
         * 返回 key 指定的哈希集中所有字段的value值  
         *  
         * @param key  
         * @return  
         */  
      
        public <T> List<T> hvalsObject(String key) {  
            ShardedJedis shardedJedis = null;  
            List<Object> retList = new ArrayList<Object>();  
            try {  
                shardedJedis = shardedJedisPool.getResource();
                Collection<byte[]> byteList=shardedJedis.hvals(serialize(key));
                Iterator<byte[]> it=byteList.iterator();
                while(it.hasNext()){
                    retList.add(SerializeUtil.deserialize(it.next()));
                } 
            } catch (Exception ex) {  
                LOG.error("hvals error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }  
            return (List<T>)retList;  
        } 
      
        /**  
         * 返回 key 指定的哈希集中所有字段的field值  
         *  
         * @param key  
         * @return  
         */  
      
        public Set<String> hkeys(String key) {  
            ShardedJedis shardedJedis = null;  
            Set<String> retList = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                retList = shardedJedis.hkeys(key);  
            } catch (Exception ex) {  
                LOG.error("hkeys error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return retList;  
        }  
      
        /**  
         * 返回 key 指定的哈希field值总数  
         *  
         * @param key  
         * @return  
         */  
        public long hlen(String key) {  
            ShardedJedis shardedJedis = null;  
            long retList = 0;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                retList = shardedJedis.hlen(key);  
            } catch (Exception ex) {  
                LOG.error("hkeys error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return retList;  
        }  
      
        /**  
         * 设置排序集合  
         *  
         * @param key  
         * @param score  
         * @param value  
         * @return  
         */  
        public boolean setSortedSet(String key, long score, String value) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.zadd(key, score, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("setSortedSet error.", ex);  
                 
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return false;  
        }
         
      
        /**  
         * 获得排序集合  
         *  
         * @param key  
         * @param startScore  
         * @param endScore  
         * @param orderByDesc  
         * @return  
         */  
        public Set<String> getSoredSet(String key, long startScore, long endScore, boolean orderByDesc) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                if (orderByDesc) {  
                    return shardedJedis.zrevrangeByScore(key, endScore, startScore);  
                } else {  
                    return shardedJedis.zrangeByScore(key, startScore, endScore);  
                }  
            } catch (Exception ex) {  
                LOG.error("getSoredSet error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return null;  
        }  
      
        /**  
         * 计算排序长度  
         *  
         * @param key  
         * @param startScore  
         * @param endScore  
         * @return  
         */  
        public long zcount(String key, long startScore, long endScore) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                Long count = shardedJedis.zcount(key, startScore, endScore);  
                return count == null ? 0L : count;  
            } catch (Exception ex) {  
                LOG.error("zcount error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }
            }  
            return 0L;  
        }  
      
        /**  
         * 删除排序集合  
         *  
         * @param key  
         * @param value  
         * @return  
         */  
        public boolean zrem(String key, String value) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                long count = shardedJedis.zrem(key, value);  
                return count > 0;  
            } catch (Exception ex) {  
                LOG.error("zrem error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return false;  
        }  
      
        /**  
         * 获得排序集合  
         *  
         * @param key  
         * @param startRange  
         * @param endRange  
         * @param orderByDesc  
         * @return  
         */  
        public Set<String> zrange(String key, int startRange, int endRange, boolean orderByDesc) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                if (orderByDesc) {  
                    return shardedJedis.zrevrange(key, startRange, endRange);  
                } else {  
                    return shardedJedis.zrange(key, startRange, endRange);  
                }  
            } catch (Exception ex) {  
                LOG.error("zrange error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return null;  
        }  
      
        /**  
         * 获得排序打分  
         *  
         * @param key  
         * @return  
         */  
        public Double zscore(String key, String member) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.zscore(key, member);  
            } catch (Exception ex) {  
                LOG.error("zscore error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                } 
            }  
            return null;  
        }
        /**  
         * 从list中删除value 默认count 1  
         *   
         * @param key  
         * @param values  
         *            值list  
         * @return  
         */  
        public int lrem(String key, List<String> values) {  
            return lrem(key, 1, values);  
        }  
      
        /**  
         * 从list中删除value  
         *   
         * @param key  
         * @param count  
         * @param values  
         *            值list  
         * @return  
         */  
        public int lrem(String key, long count, List<String> values) {  
            int result = 0;  
            if (values != null && values.size() > 0) {  
                for (String value : values) {  
                    if (lrem(key, count, value)) {  
                        result++;  
                    }  
                }  
            }  
            return result;  
        }  
      
        /**  
         * 从list中删除value  
         *   
         * @param key  
         * @param count  
         *            要删除个数  
         * @param value  
         * @return  
         */  
        public boolean lrem(String key, long count, String value) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.lrem(key, count, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("lrem error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return false;  
        }  
      
        /**  
         * 截取List  
         *   
         * @param key  
         * @param start  
         *            起始位置  
         * @param end  
         *            结束位置  
         * @return  
         */  
        public List<String> lrange(String key, long start, long end) {  
            if (key == null || key.equals("")) {  
                return null;  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.lrange(key, start, end);  
            } catch (Exception ex) {  
                LOG.error("lrange 出错[key=" + key + " start=" + start + " end=" + end + "]" + ex.getMessage(), ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }   
            }  
            return null;  
        }  
      
        /**  
         * 检查List长度  
         *   
         * @param key  
         * @return  
         */  
        public long llen(String key) {  
            if (key == null) {  
                return 0;  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.llen(key);  
            } catch (Exception ex) {  
                LOG.error("llen error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return 0;  
        }  
      
        /**  
         * 添加到List中(同时设置过期时间)  
         *   
         * @param key  
         *            key值  
         * @param seconds  
         *            过期时间 单位s  
         * @param value  
         * @return  
         */  
        public boolean lpush(String key, int seconds, String... value) {  
            boolean result = lpush(key, value);  
            if (result) {  
                long i = expire(key, seconds);  
                return i == 1;  
            }  
            return false;  
        }  
      
        /**  
         * 添加到List  
         *   
         * @param key  
         * @param value  
         * @return  
         */  
        public boolean lpush(String key, String... value) {  
            if (key == null || value == null) {  
                return false;  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.lpush(key, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("lpush error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }   
            }  
            return false;  
        }  
      
        /**  
         * 添加到List(只新增)  
         *   
         * @param key  
         * @param value  
         * @return  
         */  
        public boolean lpush(String key, List<String> list) {  
            if (key == null || list == null || list.size() == 0) {  
                return false;  
            }  
            for (String value : list) {  
                lpush(key, value);  
            }  
            return true;  
        }
        /**  
         * 截断一个List  
         *   
         * @param key  
         *            列表key  
         * @param start  
         *            开始位置 从0开始  
         * @param end  
         *            结束位置  
         * @return 状态码  
         */  
        public String ltrim(String key, long start, long end) {  
            if (key == null || key.equals("")) {  
                return "-";  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.ltrim(key, start, end);  
            } catch (Exception ex) {  
                LOG.error("ltrim 出错[key=" + key + " start=" + start + " end=" + end + "]" + ex.getMessage(), ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return "-";  
        }  
      
        /**  
         * 检查Set长度  
         *   
         * @param key  
         * @return  
         */  
        public long scard(String key) {  
            if (key == null) {  
                return 0;  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.scard(key);  
            } catch (Exception ex) {  
                LOG.error("scard error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return 0;  
        }  
      
        /**  
         * 添加到Set中(同时设置过期时间)  
         *   
         * @param key  
         *            key值  
         * @param seconds  
         *            过期时间 单位s  
         * @param value  
         * @return 成功true  
         */  
        public boolean sadd(String key, int seconds, String... value) {  
            boolean result = sadd(key, value);  
            if (result) {  
                long i = expire(key, seconds);  
                return i == 1;  
            }  
            return false;  
        }  
      
        /**  
         * 添加到Set中  
         *   
         * @param key  
         * @param value  
         * @return  
         */  
        public boolean sadd(String key, String... value) {  
            if (key == null || value == null) {  
                return false;  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.sadd(key, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("setList error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return false;  
        }
        /**  
         * 添加到Set中  
         *   
         * @param key  
         * @param value  
         * @return  
         */  
        public boolean saddObject(String key, Object... values) {  
            if (key == null || values == null) {  
                return false;  
            }
            int length=values.length;
            byte[][] array=new byte[length][];
            
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource(); 
                int i = 0;
                for(Object value : values){
                    array[i++]=SerializeUtil.serialize(value);
                }            
                shardedJedis.sadd(serialize(key), array);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("setList error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return false;  
        }
        
      
        /**  
         * @param key  
         * @param value  
         * @return 判断值是否包含在set中  
         */  
        public boolean sismember(String key, String value) {  
            if (key == null || value == null) {  
                return false;  
            }  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.sismember(key, value);  
            } catch (Exception ex) {  
                LOG.error("sismember error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return false;  
        }  
      
        /**  
         * 获取Set  
         *   
         * @param key  
         * @return  
         */  
        public Set<String> smembers(String key) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.smembers(key);  
            } catch (Exception ex) {  
                LOG.error("smembers error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return null;  
        }
        /**  
         * 获取Set  
         *   
         * @param key  
         * @return  
         */  
        public List<Object> smembersObjct(String key) {
            List<Object> list = new ArrayList<Object>();
            Set<byte[]> set = smembersByte(key);
            Iterator<byte[]> it = set.iterator();
            while (it.hasNext()) {
                list.add(SerializeUtil.deserialize(it.next()));
            }
            return list;
    
        }
        /**  
         * 获取Set  
         *   
         * @param key  
         * @return  
         */  
        public Set<byte[]> smembersByte(String key) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.smembers(key.getBytes(charset));  
            } catch (Exception ex) {  
                LOG.error("smembers error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return null;  
        }
      
        /**  
         * 从set中删除value  
         *   
         * @param key  
         * @return  
         */  
        public boolean srem(String key, String... value) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                shardedJedis.srem(key, value);  
                return true;  
            } catch (Exception ex) {  
                LOG.error("getList error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }  
            }  
            return false;  
        }  
      
        /**  
         * 获取List  
         *   
         * @param key  
         * @return  
         */  
        public List<String> lrange(String key) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                return shardedJedis.lrange(key, 0, -1);  
            } catch (Exception ex) {  
                LOG.error("lrange error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }   
            }  
            return null;  
        }
        /**  
         * 获取List  
         *   
         * @param key  
         * @return  
         */  
        public List<Object> lrangeObject(String key) {
            List<Object> objList=new ArrayList<Object>();
            List<byte[]> list=lrangeByte( key) ;
            if(list !=null &&list.size()>0){
                for (int i=0;i<list.size();i++){
                    objList.add(SerializeUtil.deserialize(list.get(i)));
                }
            }
            return objList;
        }
        /**  
         * 获取List  
         *   
         * @param key  
         * @return  
         */  
        public List<byte[]> lrangeByte(String key) {  
            ShardedJedis shardedJedis = null;  
            try {  
                shardedJedis = shardedJedisPool.getResource();  
                 
                return shardedJedis.lrange(key.getBytes(charset), 0, -1);
                
                
            } catch (Exception ex) {  
                LOG.error("lrange error.", ex);  
                  
            } finally {  
                if(shardedJedis!=null){
                    shardedJedis.close(); 
                }   
            }  
            return null;  
        }
        
        public Object getValue(String key) {  
            Object ret = null;  
            ShardedJedis jedis = shardedJedisPool.getResource();  
            try {  
      
                // 去redis中取回序列化后的对象  
                byte[] obj = jedis.get(serialize(key));  
      
                // 取回的对象反序列化  
                if (obj != null) {  
                    ret = SerializeUtil.deserialize(obj);  
                }    
            } catch (Exception e) {
                LOG.error("get error.", e); 
            } finally {
                if(jedis!=null){
                    jedis.close(); 
                }  
            }  
            return ret;  
        }      
    }
  • 相关阅读:
    HDU 2188.悼念512汶川大地震遇难同胞——选拔志愿者-巴什博奕
    hdu 4217 Data Structure? 树状数组求第K小
    hdu 5137 How Many Maos Does the Guanxi Worth 最短路 spfa
    Codeforces Round #375 (Div. 2) C. Polycarp at the Radio 贪心
    Codeforces Round #375 (Div. 2) D. Lakes in Berland dfs
    hiho 1325 : 平衡树·Treap
    bzoj 2656 [Zjoi2012]数列(sequence) 递推+高精度
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C. Destroying Array
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D. Generating Sets 贪心+优先队列
    Codeforces Round #374 (Div. 2) A , B , C 水,水,拓扑dp
  • 原文地址:https://www.cnblogs.com/zwdx/p/9442593.html
Copyright © 2011-2022 走看看