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; } }
版权声明:如需转载,请注明!PS:如是转载随便,请忽略