Redis 讲解系列之 与Spring集成(二)
上章中我们讲解了如何使用spring与spring-data-redis如何整合在一起同时总结出了一些优缺点,正对于缺点的优化和改善,本章将讲解一种高自定获取Jedispool和RedisClientTemplate的方法。
实例
新建Maven web项目,并自定义Build path source folde。
文件代码
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sstps.redis</groupId> <artifactId>Template1</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.2.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.4.2</version> </dependency> <!-- Hack:确保commons-logging的jar包不被引入,否则将和jcl-over-slf4j冲突 --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> <scope>provided</scope> </dependency> </dependencies> </project>
redis.properties
# Redis settings redis.host=127.0.0.1 redis.port=6379 redis.password=wljr redis.timeout=3000 redis.maxIdle=300 redis.maxTotal=600 redis.maxWait=1000 redis.testOnBorrow=true redis.testOnReturn=true
AplicationContext.xml
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> <!-- 启用注解 --> <context:annotation-config></context:annotation-config> <!-- 扫描 --> <context:component-scan base-package="com.sstps.redis" use-default-filters="true"></context:component-scan> <!-- 读取配置文件 --> <bean id="propertyConfiguration" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/classes/redis.properties</value> </list> </property> </bean> <!-- ================================== Redis 配置开始 ================================================= --> <!-- Redis Template --> <bean id="" class="com.sstps.redis.RedisClientTemplate"> <property name="redisDataSource" ref="redisDataSource"></property> </bean> <!-- Redis DataSource --> <bean id="redisDataSource" class="com.sstps.redis.RedisDataSourceImpl"> <property name="jedisPool" ref="jedispool"></property> </bean> <!-- Redis pool setting --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}"></property> <property name="maxTotal" value="${redis.maxTotal}"></property> <property name="maxWaitMillis" value="${redis.maxWait}"></property> <property name="testOnBorrow" value="${redis.testOnBorrow}"></property> <property name="testOnReturn" value="${redis.testOnReturn}"></property> </bean> <!-- Redis Connector setting --> <bean id="jedispool" class="redis.clients.jedis.JedisPool"> <constructor-arg index="0" ref="jedisPoolConfig"/> <constructor-arg index="1" value="${redis.host}"/> <constructor-arg index="2" value="${redis.port}" type="int"/> <constructor-arg index="3" value="${redis.timeout}" type="int"/> <constructor-arg index="4" value="${redis.password}"/> </bean> <!-- ================================== Redis 配置结束 ================================================= --> </beans>
RedisDataSource.java
package com.sstps.redis; import redis.clients.jedis.Jedis; public interface RedisDataSource { // 取得redis的客户端,可以执行命令了。 public abstract Jedis getRedisClient(); //将资源返还给pool public void returnResource(Jedis shardedJedis); //出现异常后,将资源返还给pool public void returnResource(Jedis shardedJedis,boolean broken); }
RedisDataSourceImpl.java
package com.sstps.redis; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; public class RedisDataSourceImpl implements RedisDataSource { public static Log log = LogFactory.getLog(RedisDataSourceImpl.class); private JedisPool jedisPool; public JedisPool getJedisPool() { return jedisPool; } public void setJedisPool(JedisPool JedisPool) { this.jedisPool = JedisPool; } public Jedis getRedisClient() { try { Jedis shardJedis = jedisPool.getResource(); return shardJedis; } catch (Exception e) { log.error("getRedisClent error", e); } return null; } public void returnResource(Jedis Jedis) { jedisPool.returnResource(Jedis); } public void returnResource(Jedis Jedis, boolean broken) { if (broken) { jedisPool.returnBrokenResource(Jedis); } else { jedisPool.returnResource(Jedis); } } }
Template.java
package com.sstps.template; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sstps.redis.RedisClientTemplate; public class Template { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:/AplicationContext.xml"); RedisClientTemplate redisClient = (RedisClientTemplate)ac.getBean("redisClientTemplate"); redisClient.set("a", "Hi~Redis"); System.out.println(redisClient.get("a")); } }
RedisClientTemplate.java
package com.sstps.redis; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.context.ContextLoader; import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.jedis.Jedis; import redis.clients.jedis.SortingParams; import redis.clients.jedis.Tuple; /** * * @author * 2016.8.24 * 第二层的封装:RedisClientTemplate * */ public class RedisClientTemplate { public static Log log = LogFactory.getLog(RedisClientTemplate.class); private RedisDataSource redisDataSource; public RedisDataSource getRedisDataSource() { return redisDataSource; } public void setRedisDataSource(RedisDataSource redisDataSource) { this.redisDataSource = redisDataSource; } public void disconnect() { Jedis Jedis = redisDataSource.getRedisClient(); Jedis.disconnect(); } /** * 设置单个值 * * @param key * @param value * @return * @throws Exception */ public String set(String key, String value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.set(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } /** * 获取单个值 * * @param key * @return */ public String get(String key) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.get(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Boolean exists(String key) { Boolean result = false; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.exists(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String type(String key) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.type(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } /** * 在某段时间后实现 * * @param key * @param unixTime * @return */ public Long expire(String key, int seconds) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.expire(key, seconds); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } /** * 在某个时间点失效 * * @param key * @param unixTime * @return */ public Long expireAt(String key, long unixTime) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.expireAt(key, unixTime); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long ttl(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.ttl(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public boolean setbit(String key, long offset, boolean value) { Jedis Jedis = redisDataSource.getRedisClient(); boolean result = false; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.setbit(key, offset, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public boolean getbit(String key, long offset) { Jedis Jedis = redisDataSource.getRedisClient(); boolean result = false; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getbit(key, offset); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public long setrange(String key, long offset, String value) { Jedis Jedis = redisDataSource.getRedisClient(); long result = 0; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.setrange(key, offset, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String getrange(String key, long startOffset, long endOffset) { Jedis Jedis = redisDataSource.getRedisClient(); String result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getrange(key, startOffset, endOffset); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String getSet(String key, String value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getSet(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long setnx(String key, String value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.setnx(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String setex(String key, int seconds, String value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.setex(key, seconds, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long decrBy(String key, long integer) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.decrBy(key, integer); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long decr(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.decr(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long incrBy(String key, long integer) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.incrBy(key, integer); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long incr(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.incr(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long append(String key, String value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.append(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String substr(String key, int start, int end) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.substr(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hset(String key, String field, String value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hset(key, field, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String hget(String key, String field) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hget(key, field); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hsetnx(String key, String field, String value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hsetnx(key, field, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String hmset(String key, Map<String, String> hash) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hmset(key, hash); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<String> hmget(String key, String... fields) { List<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hmget(key, fields); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hincrBy(String key, String field, long value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hincrBy(key, field, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Boolean hexists(String key, String field) { Boolean result = false; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hexists(key, field); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long del(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.del(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hdel(String key, String field) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hdel(key, field); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hlen(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hlen(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> hkeys(String key) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hkeys(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<String> hvals(String key) { List<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hvals(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Map<String, String> hgetAll(String key) { Map<String, String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hgetAll(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } // ================list ====== l表示 list或 left, r表示right==================== public Long rpush(String key, String string) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.rpush(key, string); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long lpush(String key, String string) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lpush(key, string); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long llen(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.llen(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<String> lrange(String key, long start, long end) { List<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lrange(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String ltrim(String key, long start, long end) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.ltrim(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String lindex(String key, long index) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lindex(key, index); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String lset(String key, long index, String value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lset(key, index, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long lrem(String key, long count, String value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lrem(key, count, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String lpop(String key) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lpop(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String rpop(String key) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.rpop(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } //return 1 add a not exist value , //return 0 add a exist value public Long sadd(String key, String member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sadd(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> smembers(String key) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.smembers(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long srem(String key, String member) { Jedis Jedis = redisDataSource.getRedisClient(); Long result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.srem(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String spop(String key) { Jedis Jedis = redisDataSource.getRedisClient(); String result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.spop(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long scard(String key) { Jedis Jedis = redisDataSource.getRedisClient(); Long result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.scard(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Boolean sismember(String key, String member) { Jedis Jedis = redisDataSource.getRedisClient(); Boolean result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sismember(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String srandmember(String key) { Jedis Jedis = redisDataSource.getRedisClient(); String result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.srandmember(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zadd(String key, double score, String member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zadd(key, score, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> zrange(String key, int start, int end) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrange(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zrem(String key, String member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrem(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Double zincrby(String key, double score, String member) { Double result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zincrby(key, score, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zrank(String key, String member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrank(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zrevrank(String key, String member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrank(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> zrevrange(String key, int start, int end) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrange(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrangeWithScores(String key, int start, int end) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeWithScores(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrevrangeWithScores(String key, int start, int end) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeWithScores(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zcard(String key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zcard(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Double zscore(String key, String member) { Double result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zscore(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<String> sort(String key) { List<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sort(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<String> sort(String key, SortingParams sortingParameters) { List<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sort(key, sortingParameters); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zcount(String key, double min, double max) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zcount(key, min, max); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> zrangeByScore(String key, double min, double max) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScore(key, min, max); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> zrevrangeByScore(String key, double max, double min) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScore(key, max, min); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> zrangeByScore(String key, double min, double max, int offset, int count) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScore(key, min, max, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<String> zrevrangeByScore(String key, double max, double min, int offset, int count) { Set<String> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScore(key, max, min, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScoreWithScores(key, min, max); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScoreWithScores(key, max, min); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max, int offset, int count) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScoreWithScores(key, min, max, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScoreWithScores(key, max, min, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zremrangeByRank(String key, int start, int end) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zremrangeByRank(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zremrangeByScore(String key, double start, double end) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zremrangeByScore(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long linsert(String key, LIST_POSITION where, String pivot, String value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.linsert(key, where, pivot, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String set(byte[] key, byte[] value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.set(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] get(byte[] key) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.get(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Boolean exists(byte[] key) { Boolean result = false; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.exists(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String type(byte[] key) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.type(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long expire(byte[] key, int seconds) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.expire(key, seconds); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long expireAt(byte[] key, long unixTime) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.expireAt(key, unixTime); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long ttl(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.ttl(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] getSet(byte[] key, byte[] value) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getSet(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long setnx(byte[] key, byte[] value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.setnx(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String setex(byte[] key, int seconds, byte[] value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.setex(key, seconds, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long decrBy(byte[] key, long integer) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.decrBy(key, integer); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long decr(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.decr(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long incrBy(byte[] key, long integer) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.incrBy(key, integer); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long incr(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.incr(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long append(byte[] key, byte[] value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.append(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] substr(byte[] key, int start, int end) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.substr(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hset(byte[] key, byte[] field, byte[] value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hset(key, field, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] hget(byte[] key, byte[] field) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hget(key, field); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hsetnx(byte[] key, byte[] field, byte[] value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hsetnx(key, field, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String hmset(byte[] key, Map<byte[], byte[]> hash) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hmset(key, hash); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<byte[]> hmget(byte[] key, byte[]... fields) { List<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hmget(key, fields); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hincrBy(byte[] key, byte[] field, long value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hincrBy(key, field, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Boolean hexists(byte[] key, byte[] field) { Boolean result = false; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hexists(key, field); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hdel(byte[] key, byte[] field) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hdel(key, field); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long hlen(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hlen(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> hkeys(byte[] key) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hkeys(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Collection<byte[]> hvals(byte[] key) { Collection<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hvals(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Map<byte[], byte[]> hgetAll(byte[] key) { Map<byte[], byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.hgetAll(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long rpush(byte[] key, byte[] string) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.rpush(key, string); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long lpush(byte[] key, byte[] string) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lpush(key, string); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long llen(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.llen(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<byte[]> lrange(byte[] key, int start, int end) { List<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lrange(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String ltrim(byte[] key, int start, int end) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.ltrim(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] lindex(byte[] key, int index) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lindex(key, index); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String lset(byte[] key, int index, byte[] value) { String result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lset(key, index, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long lrem(byte[] key, int count, byte[] value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lrem(key, count, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] lpop(byte[] key) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.lpop(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] rpop(byte[] key) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.rpop(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long sadd(byte[] key, byte[] member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sadd(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> smembers(byte[] key) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.smembers(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long srem(byte[] key, byte[] member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.srem(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] spop(byte[] key) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.spop(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long scard(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.scard(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Boolean sismember(byte[] key, byte[] member) { Boolean result = false; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sismember(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public byte[] srandmember(byte[] key) { byte[] result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.srandmember(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zadd(byte[] key, double score, byte[] member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zadd(key, score, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> zrange(byte[] key, int start, int end) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrange(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zrem(byte[] key, byte[] member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrem(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Double zincrby(byte[] key, double score, byte[] member) { Double result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zincrby(key, score, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zrank(byte[] key, byte[] member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrank(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zrevrank(byte[] key, byte[] member) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrank(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> zrevrange(byte[] key, int start, int end) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrange(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrangeWithScores(byte[] key, int start, int end) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeWithScores(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrevrangeWithScores(byte[] key, int start, int end) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeWithScores(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zcard(byte[] key) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zcard(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Double zscore(byte[] key, byte[] member) { Double result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zscore(key, member); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<byte[]> sort(byte[] key) { List<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sort(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public List<byte[]> sort(byte[] key, SortingParams sortingParameters) { List<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.sort(key, sortingParameters); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zcount(byte[] key, double min, double max) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zcount(key, min, max); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> zrangeByScore(byte[] key, double min, double max) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScore(key, min, max); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> zrangeByScore(byte[] key, double min, double max, int offset, int count) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScore(key, min, max, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrangeByScoreWithScores(byte[] key, double min, double max) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScoreWithScores(key, min, max); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrangeByScoreWithScores(byte[] key, double min, double max, int offset, int count) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrangeByScoreWithScores(key, min, max, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> zrevrangeByScore(byte[] key, double max, double min) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScore(key, max, min); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<byte[]> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) { Set<byte[]> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScore(key, max, min, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrevrangeByScoreWithScores(byte[] key, double max, double min) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScoreWithScores(key, max, min); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Set<Tuple> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) { Set<Tuple> result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zrevrangeByScoreWithScores(key, max, min, offset, count); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zremrangeByRank(byte[] key, int start, int end) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zremrangeByRank(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long zremrangeByScore(byte[] key, double start, double end) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.zremrangeByScore(key, start, end); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Long linsert(byte[] key, LIST_POSITION where, byte[] pivot, byte[] value) { Long result = null; Jedis Jedis = redisDataSource.getRedisClient(); if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.linsert(key, where, pivot, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } /* public List<Object> pipelined(JedisPipeline JedisPipeline) { Jedis Jedis = redisDataSource.getRedisClient(); List<Object> result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.pipelined(JedisPipeline); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Jedis getShard(byte[] key) { Jedis Jedis = redisDataSource.getRedisClient(); Jedis result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getShard(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Jedis getShard(String key) { Jedis Jedis = redisDataSource.getRedisClient(); Jedis result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getShard(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public JedisShardInfo getShardInfo(byte[] key) { Jedis Jedis = redisDataSource.getRedisClient(); JedisShardInfo result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getShardInfo(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public JedisShardInfo getShardInfo(String key) { Jedis Jedis = redisDataSource.getRedisClient(); JedisShardInfo result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getShardInfo(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public String getKeyTag(String key) { Jedis Jedis = redisDataSource.getRedisClient(); String result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getKeyTag(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Collection<JedisShardInfo> getAllShardInfo() { Jedis Jedis = redisDataSource.getRedisClient(); Collection<JedisShardInfo> result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getAllShardInfo(); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; } public Collection<Jedis> getAllShards() { Jedis Jedis = redisDataSource.getRedisClient(); Collection<Jedis> result = null; if (Jedis == null) { return result; } boolean broken = false; try { result = Jedis.getAllShards(); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(Jedis, broken); } return result; }*/ }
运行结果:
总结
Redis与Spring直接整合,而对RedisClientTemplate和JedisPool做了剥离和二次封装。下面我们总结一下本章方法的优缺点:
- 缺点
- 代码较冗余,毕竟是二次封装,从RedisClientTemplate.java即可看出。
- …..
- -
优点
- 使用体验极好,不要考虑考虑新建或者归还jedispool的问题。使用时直接使用RedisClientTemplate即可。
优化点
- 考虑将本章例子的Redis打成jar包已依赖的方式导入,然后在AplictionContext.xml完成同样的配置,这样依赖代码既不冗余,灵活性和实用性极高了。
本章实例获取链接
Spring+Redis(抽离RedisClientTemplate和JedisPool并进行二次封装)例子:
http://pan.baidu.com/s/1nvl4Pzr