java,Redis实战之jedis搭建工程运行
阅读原文时间:2021年04月20日阅读:1

在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能,个人觉得这样整合灵活度更大,能够更加明了的完成任务

1.demo先run起来(maven+spring+pool)

通过spriing加载配置文件redis的配置文件,redisDataSource封装数据源,redisClientTemplate封装了基本操作

最终通过redisClientTemplate 操作redis。

1.1maven pom配置


maven中添加jedis,当前最新是:2.9.0

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

1.2spring jedis配置

其中:

context:property-placeholder 标签用来导入properties文件。从而替换${redis.maxTotal}这样的变量。



<?xml version="1.0" encoding="UTF-8"?> &nbsp;
<beans xmlns="http://www.springframework.org/schema/beans" &nbsp;
&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" &nbsp;
&nbsp;&nbsp;&nbsp; xmlns:context="http://www.springframework.org/schema/context" &nbsp;
&nbsp;&nbsp;&nbsp; xsi:schemaLocation=" &nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd &nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-autowire="byName"> &nbsp;

&nbsp;&nbsp;&nbsp; <context:property-placeholder location="classpath:redis.properties" /> &nbsp;
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp; <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!-- 连接池中最大连接数。高版本:maxTotal,低版本:maxActive -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="maxTotal" value="${redis.maxTotal}" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- 连接池中最大空闲的连接数. -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="maxIdle" value="${redis.maxIdle}" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- 连接池中最少空闲的连接数. -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="minIdle" value="${redis.minIdle}" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- 当连接池资源耗尽时,调用者最大阻塞的时间,超时将跑出异常。单位,毫秒数;默认为-1.表示永不超时。高版本:maxWaitMillis,低版本:maxWait -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- 连接空闲的最小时间,达到此值后空闲连接将可能会被移除。负值(-1)表示不移除. -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="minEvictableIdleTimeMillis" value="300000" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3 -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="numTestsPerEvictionRun" value="3" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- “空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1. -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<property name="timeBetweenEvictionRunsMillis" value="60000" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- testOnBorrow:向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。默认为false。建议保持默认值. -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- testOnReturn:向连接池“归还”链接时,是否检测“链接”对象的有效性。默认为false。建议保持默认值.-->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- testWhileIdle:向调用者输出“链接”对象时,是否检测它的空闲超时;默认为false。如果“链接”空闲超时,将会被移除。建议保持默认值. -->
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<!-- whenExhaustedAction:当“连接池”中active数量达到阀值时,即“链接”资源耗尽时,连接池需要采取的手段, 默认为1(0:抛出异常。1:阻塞,直到有可用链接资源。2:强制创建新的链接资源) --> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <property name="testOnReturn" value="${redis.testOnReturn}"/>
&nbsp;&nbsp;&nbsp; </bean>

&nbsp;&nbsp;&nbsp; <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"&nbsp; scope="singleton">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg index="0" ref="jedisPoolConfig" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg index="1">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <list>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <bean class="redis.clients.jedis.JedisShardInfo">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg index="0" value="${redis.host}" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg index="1" value="${redis.port}" type="int" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!-- 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg name="host" value="${redis.host}" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg name="port" value="${redis.port}" type="int" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg name="weight" value="1" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <constructor-arg name="timeout" value="${redis.timeout}" type="int" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <property name="password" value="${redis.pass}"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </bean>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </list>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </constructor-arg>
&nbsp;&nbsp;&nbsp; </bean>
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp; <bean id="redisDataSource" class="com.xxxxx.common.redis.RedisDataSourceImpl" />
&nbsp;&nbsp;&nbsp; <bean id="redisClientTemplate" class="com.xxxxxx.common.redis.RedisClientTemplate" />
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;
</beans>

redis.properties文件内容:

redis.host主机地址,127.0.0.0.1或者服务器实际ip地址

redis.pass,连接密码,自行修改

redis.host=xxx.xxx.xxx.xxx
redis.port=6379
redis.pass=xxxxx
redis.minIdle=1
redis.maxIdle=4
redis.maxTotal=8
redis.maxWaitMillis=3000
redis.testOnBorrow=true
redis.testOnReturn=true
redis.timeout=2000

1.3redisDataSource 封装


import redis.clients.jedis.ShardedJedis;

/**
 * <p>标题: </p>
 * <p>描述: </p>
 * <p>版权: </p>
 * <p>创建时间: 2016年12月19日  下午10:12:06</p>
 * <p>作者:niepeng</p>
 */
public interface RedisDataSource {
    public abstract ShardedJedis getRedisClient();
    public void returnResource(ShardedJedis shardedJedis);
    public void returnResource(ShardedJedis shardedJedis,boolean broken);
}

实现类:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 * <p>标题: </p>
 * <p>描述: </p>
 * <p>版权: </p>
 * <p>创建时间: 2016年12月19日  下午10:12:40</p>
 * <p>作者:niepeng</p>
 */
public class RedisDataSourceImpl implements RedisDataSource {

    protected final Logger log = LoggerFactory.getLogger(getClass());

    private ShardedJedisPool shardedJedisPool;

    @Override
    public ShardedJedis getRedisClient() {
        try {
            return shardedJedisPool.getResource();
        } catch (Exception e) {
            log.error("getRedisClent error", e);
        }
        return null;
    }

    @Override
    public void returnResource(ShardedJedis shardedJedis) {
//         shardedJedisPool.returnResource(shardedJedis);
        shardedJedis.close();
    }

    @Override
    public void returnResource(ShardedJedis shardedJedis, boolean broken) {
        // if (broken) {
        // shardedJedisPool.returnBrokenResource(shardedJedis);
        // } else {
        // shardedJedisPool.returnResource(shardedJedis);
        // }
        returnResource(shardedJedis);
    }

    public void setShardedJedisPool(ShardedJedisPool shardedJedisPool) {
        this.shardedJedisPool = shardedJedisPool;
    }

}




老版本采用如下方法returnResource:
shardedJedisPool.returnResource(shardedJedis);
新版本采用:shardedJedis.close(); 会根据 shardedJedis自身是否为broken来处理,具体可以查看close方法的内部实现

ShardedJedis类的 close方法实现:

  public void close() {
    if (dataSource != null) {
      boolean broken = false;

      for (Jedis jedis : getAllShards()) {
        if (jedis.getClient().isBroken()) {
          broken = true;
          break;
        }
      }

      if (broken) {
        dataSource.returnBrokenResource(this);
      } else {
        dataSource.returnResource(this);
      }

    } else {
      disconnect();
    }
  }

1.4RedisClientTemplate 封装


下面封装了很多操作,刚开始测试一个set和一个get即可跑起来

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import redis.clients.jedis.BinaryClient.LIST_POSITION;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPipeline;
import redis.clients.jedis.SortingParams;
import redis.clients.jedis.Tuple;

/**
&nbsp;* <p>标题: </p>
&nbsp;* <p>描述: </p>
&nbsp;* <p>版权: </p>
&nbsp;* <p>创建时间: 2016年12月19日&nbsp; 下午10:26:38</p>
&nbsp;* <p>作者:niepeng</p>
&nbsp;*/
public class RedisClientTemplate {

&nbsp;&nbsp; &nbsp;protected final Logger log = LoggerFactory.getLogger(getClass());

&nbsp;&nbsp; &nbsp;private RedisDataSource redisDataSource;

&nbsp;&nbsp; &nbsp;public void disconnect() {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;shardedJedis.disconnect();
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;/**
&nbsp;&nbsp; &nbsp; * 设置单个值
&nbsp;&nbsp; &nbsp; * 
&nbsp;&nbsp; &nbsp; * @param key
&nbsp;&nbsp; &nbsp; * @param value
&nbsp;&nbsp; &nbsp; * @return
&nbsp;&nbsp; &nbsp; */
&nbsp;&nbsp; &nbsp;public String set(String key, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.set(key, value);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;/**
&nbsp;&nbsp; &nbsp; * 获取单个值
&nbsp;&nbsp; &nbsp; * 
&nbsp;&nbsp; &nbsp; * @param key
&nbsp;&nbsp; &nbsp; * @return
&nbsp;&nbsp; &nbsp; */
&nbsp;&nbsp; &nbsp;public String get(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.get(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Boolean exists(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.exists(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String type(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.type(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;/**
&nbsp;&nbsp; &nbsp; * 在某段时间后失效
&nbsp;&nbsp; &nbsp; * 
&nbsp;&nbsp; &nbsp; * @param key
&nbsp;&nbsp; &nbsp; * @param seconds 单位秒
&nbsp;&nbsp; &nbsp; * @return
&nbsp;&nbsp; &nbsp; */
&nbsp;&nbsp; &nbsp;public Long expire(String key, int seconds) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.expire(key, seconds);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;/**
&nbsp;&nbsp; &nbsp; * 在某个时间点失效
&nbsp;&nbsp; &nbsp; * 
&nbsp;&nbsp; &nbsp; * @param key
&nbsp;&nbsp; &nbsp; * @param unixTime
&nbsp;&nbsp; &nbsp; * @return
&nbsp;&nbsp; &nbsp; */
&nbsp;&nbsp; &nbsp;public Long expireAt(String key, long unixTime) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.expireAt(key, unixTime);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long ttl(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.ttl(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public boolean setbit(String key, long offset, boolean value) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.setbit(key, offset, value);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public boolean getbit(String key, long offset) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getbit(key, offset);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public long setrange(String key, long offset, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;long result = 0;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.setrange(key, offset, value);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String getrange(String key, long startOffset, long endOffset) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getrange(key, startOffset, endOffset);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String getSet(String key, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getSet(key, value);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long setnx(String key, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.setnx(key, value);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String setex(String key, int seconds, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.setex(key, seconds, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long decrBy(String key, long integer) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.decrBy(key, integer);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long decr(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.decr(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long incrBy(String key, long integer) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.incrBy(key, integer);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long incr(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.incr(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long append(String key, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.append(key, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String substr(String key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.substr(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hset(String key, String field, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hset(key, field, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String hget(String key, String field) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hget(key, field);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hsetnx(String key, String field, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hsetnx(key, field, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String hmset(String key, Map<String, String> hash) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hmset(key, hash);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<String> hmget(String key, String... fields) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hmget(key, fields);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hincrBy(String key, String field, long value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hincrBy(key, field, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Boolean hexists(String key, String field) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hexists(key, field);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long del(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.del(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hdel(String key, String... field) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hdel(key, field);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hlen(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hlen(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<String> hvals(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hvals(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Map<String, String> hgetAll(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Map<String, String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hgetAll(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;public Long persist(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.persist(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;// ================list ====== l表示 list或 left, r表示right====================
&nbsp;&nbsp; &nbsp;public Long rpush(String key, String string) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.rpush(key, string);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long lpush(String key, String... string) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lpush(key, string);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;public Long llen(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.llen(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<String> lrange(String key, long start, long end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lrange(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String ltrim(String key, long start, long end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.ltrim(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String lindex(String key, long index) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lindex(key, index);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String lset(String key, long index, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lset(key, index, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long lrem(String key, long count, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lrem(key, count, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String lpop(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lpop(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String rpop(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.rpop(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;// return 1 add a not exist value ,
&nbsp;&nbsp; &nbsp;// return 0 add a exist value
&nbsp;&nbsp; &nbsp;public Long sadd(String key, String... member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sadd(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> smembers(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.smembers(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long srem(String key, String... member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.srem(key, member);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String spop(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.spop(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long scard(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.scard(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Boolean sismember(String key, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Boolean result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sismember(key, member);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String srandmember(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.srandmember(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zadd(String key, double score, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zadd(key, score, member);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;public Long zadd(String key, Map<String, Double> scoreMembers) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zadd(key, scoreMembers);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> zrange(String key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrange(key, start, end);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zrem(String key, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrem(key, member);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Double zincrby(String key, double score, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Double result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zincrby(key, score, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zrank(String key, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrank(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zrevrank(String key, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrank(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> zrevrange(String key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrange(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrangeWithScores(String key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeWithScores(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrevrangeWithScores(String key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeWithScores(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zcard(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zcard(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Double zscore(String key, String member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Double result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zscore(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<String> sort(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sort(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<String> sort(String key, SortingParams sortingParameters) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sort(key, sortingParameters);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zcount(String key, double min, double max) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zcount(key, min, max);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> zrangeByScore(String key, double min, double max) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScore(key, min, max);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> zrevrangeByScore(String key, double max, double min) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScore(key, max, min);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> zrangeByScore(String key, double min, double max, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScore(key, min, max, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<String> zrevrangeByScore(String key, double max, double min, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScore(key, max, min, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScoreWithScores(key, min, max);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScoreWithScores(key, max, min);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScoreWithScores(key, min, max, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrevrangeByScoreWithScores(String key, double max, double min, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScoreWithScores(key, max, min, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zremrangeByRank(String key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zremrangeByRank(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zremrangeByScore(String key, double start, double end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zremrangeByScore(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long linsert(String key, LIST_POSITION where, String pivot, String value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.linsert(key, where, pivot, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String set(byte[] key, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.set(key, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] get(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.get(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Boolean exists(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.exists(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String type(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.type(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long expire(byte[] key, int seconds) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.expire(key, seconds);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long expireAt(byte[] key, long unixTime) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.expireAt(key, unixTime);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long ttl(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.ttl(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] getSet(byte[] key, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getSet(key, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long setnx(byte[] key, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.setnx(key, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String setex(byte[] key, int seconds, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.setex(key, seconds, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long decrBy(byte[] key, long integer) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.decrBy(key, integer);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long decr(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.decr(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long incrBy(byte[] key, long integer) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.incrBy(key, integer);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long incr(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.incr(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long append(byte[] key, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.append(key, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] substr(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.substr(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hset(byte[] key, byte[] field, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hset(key, field, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] hget(byte[] key, byte[] field) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hget(key, field);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hsetnx(byte[] key, byte[] field, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hsetnx(key, field, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String hmset(byte[] key, Map<byte[], byte[]> hash) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hmset(key, hash);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<byte[]> hmget(byte[] key, byte[]... fields) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hmget(key, fields);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hincrBy(byte[] key, byte[] field, long value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hincrBy(key, field, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Boolean hexists(byte[] key, byte[] field) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hexists(key, field);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hdel(byte[] key, byte[] field) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hdel(key, field);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long hlen(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hlen(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> hkeys(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hkeys(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;public Set<String> hkeys(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<String> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hkeys(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;

&nbsp;&nbsp; &nbsp;public Collection<byte[]> hvals(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Collection<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hvals(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Map<byte[], byte[]> hgetAll(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Map<byte[], byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.hgetAll(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long rpush(byte[] key, byte[] string) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.rpush(key, string);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long lpush(byte[] key, byte[] string) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lpush(key, string);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long llen(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.llen(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<byte[]> lrange(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lrange(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String ltrim(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.ltrim(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] lindex(byte[] key, int index) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lindex(key, index);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String lset(byte[] key, int index, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lset(key, index, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long lrem(byte[] key, int count, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lrem(key, count, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] lpop(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.lpop(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] rpop(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.rpop(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long sadd(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sadd(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> smembers(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.smembers(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long srem(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.srem(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] spop(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.spop(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long scard(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.scard(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Boolean sismember(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Boolean result = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sismember(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public byte[] srandmember(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;byte[] result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.srandmember(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zadd(byte[] key, double score, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zadd(key, score, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> zrange(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrange(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zrem(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrem(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Double zincrby(byte[] key, double score, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Double result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zincrby(key, score, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zrank(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrank(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zrevrank(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrank(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> zrevrange(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrange(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrangeWithScores(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeWithScores(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrevrangeWithScores(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeWithScores(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zcard(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zcard(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Double zscore(byte[] key, byte[] member) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Double result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zscore(key, member);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<byte[]> sort(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sort(key);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<byte[]> sort(byte[] key, SortingParams sortingParameters) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.sort(key, sortingParameters);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zcount(byte[] key, double min, double max) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zcount(key, min, max);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> zrangeByScore(byte[] key, double min, double max) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScore(key, min, max);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> zrangeByScore(byte[] key, double min, double max, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScore(key, min, max, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrangeByScoreWithScores(byte[] key, double min, double max) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScoreWithScores(key, min, max);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrangeByScoreWithScores(byte[] key, double min, double max, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrangeByScoreWithScores(key, min, max, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> zrevrangeByScore(byte[] key, double max, double min) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScore(key, max, min);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<byte[]> zrevrangeByScore(byte[] key, double max, double min, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<byte[]> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScore(key, max, min, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrevrangeByScoreWithScores(byte[] key, double max, double min) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScoreWithScores(key, max, min);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Set<Tuple> zrevrangeByScoreWithScores(byte[] key, double max, double min, int offset, int count) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Set<Tuple> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zrevrangeByScoreWithScores(key, max, min, offset, count);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zremrangeByRank(byte[] key, int start, int end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zremrangeByRank(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long zremrangeByScore(byte[] key, double start, double end) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.zremrangeByScore(key, start, end);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Long linsert(byte[] key, LIST_POSITION where, byte[] pivot, byte[] value) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Long result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.linsert(key, where, pivot, value);

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public List<Object> pipelined(ShardedJedisPipeline shardedJedisPipeline) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;List<Object> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.pipelined(shardedJedisPipeline);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Jedis getShard(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Jedis result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getShard(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Jedis getShard(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Jedis result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getShard(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public JedisShardInfo getShardInfo(byte[] key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;JedisShardInfo result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getShardInfo(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public JedisShardInfo getShardInfo(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;JedisShardInfo result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getShardInfo(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public String getKeyTag(String key) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;String result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getKeyTag(key);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Collection<JedisShardInfo> getAllShardInfo() {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Collection<JedisShardInfo> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getAllShardInfo();

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public Collection<Jedis> getAllShards() {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ShardedJedis shardedJedis = redisDataSource.getRedisClient();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Collection<Jedis> result = null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (shardedJedis == null) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;boolean broken = false;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;try {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;result = shardedJedis.getAllShards();

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} catch (Exception e) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;log.error(e.getMessage(), e);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;broken = true;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;} finally {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;redisDataSource.returnResource(shardedJedis, broken);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return result;
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;public Jedis getOneJedis() {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Collection<JedisShardInfo> c = getAllShardInfo();
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (c == null || c.isEmpty()) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return null;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;JedisShardInfo[] array = new JedisShardInfo[c.size()];
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;c.toArray(array);
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return new Jedis(array[0]);
&nbsp;&nbsp; &nbsp;}
&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp; &nbsp;public void closeJedis(Jedis jedis) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;jedis.close();
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public void setRedisDataSource(RedisDataSource redisDataSource) {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;this.redisDataSource = redisDataSource;
&nbsp;&nbsp; &nbsp;}

&nbsp;&nbsp; &nbsp;public RedisDataSource getRedisDataSource() {
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return redisDataSource;
&nbsp;&nbsp; &nbsp;}

更多操作详见:http://blog.csdn.net/lsblsb/article/details/53771204

1.5测试

注入RedisClientTemplate类,直接调用 

String key = "test1";
        int seconds = 10;
        redisClientTemplate.set(key, "test1value2");
        redisClientTemplate.expire(key, seconds);
        for(int i=0;i<15;i++) {
            System.out.println(DateUtil.format(new Date()) + "," + redisClientTemplate.get(key));
            SystemClock.sleep(1200);
        }

2.通道一次异步执行多个命令

这里介绍通过通道方式实现:

public void testTransaction() {
        String key = "testTransaction";

        ShardedJedis shardedJedis = redisClientTemplate.getRedisDataSource().getRedisClient();

        // 开启通道
        ShardedJedisPipeline shardedJedisPipeline = shardedJedis.pipelined();
        for (int i = 0; i < 10; i++) {
            shardedJedisPipeline.set(key + "_" + i, "value1");
            shardedJedisPipeline.expire(key + "_" + i, 60 * 10);
        }

        // 提交通道内容并返回内容
        List<Object> list = shardedJedisPipeline.syncAndReturnAll();
        System.out.println("listSize=" + list.size());
        int index = 0;
        for(Object obj : list) {
            System.out.println((++index) + "obj=" + obj);
        }
        redisClientTemplate.getRedisDataSource().returnResource(shardedJedis);

    }

更多方法参考:http://www.open-open.com/lib/view/open1410485827242.html

3.事务操作,watch介绍

分片无法实现事务,普通的实现事务方式:

public void testTransaction() {
        String host = "xxx.xxx.xxx.xxx";
        int port = 6379;
        String password = "xxxxxxxxx";
        JedisShardInfo jedisShardInfo = new JedisShardInfo(host, port);
        jedisShardInfo.setPassword(password);

        Jedis jedis = new Jedis(jedisShardInfo);
        long start = System.currentTimeMillis();
        Transaction tx = jedis.multi();
        for (int i = 0; i < 10; i++) {
            tx.set("t" + i, "t" + i);
            tx.expire("t" + i, 60 * 10);
        }
        List<Object> results = tx.exec();
        for (int i = 0, size = results.size(); i < size; i++) {
            System.out.println((i) + ",result=" + results.get(i));
        }
        long end = System.currentTimeMillis();
        System.out.println("Transaction SET: " + ((end - start)));
        jedis.close();
    }

通过MULTI命令和EXEC命令之间的事务命令:
第一种情况:如果有语法错误,那么所有命令都不会执行
第二种情况:没有语法错误,是运行错误,那么除了错误的命令,其他命令依旧执行了,跟数据库事务回滚不同

事务本身是提交一串命令,但是如果有些情况下需要先获得一条命令的返回值,然后再根据这个值执行下一条命令呢,默认redis事务不支持,那么需要用到另外的关键词watch:

命令行更加直观:

特别注意:

由于WATCH命令的作用只是当被监控的键值被修改后 阻止之后一个事务的执行,而不能保证其他客户端不修改这一键值,所以我们需要在EXEC执行失败后重新执行过程。

另外:UNWATCH命令来保证下一个事务的执行不会受到影响

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章