Redis学习

1 概述

    目前多数的NoSql数据库本质上都是键值对形式,Redis也不例外。作为缓存数据库的一种,和Memcached相比,有以下几种主要的优点:

(1)速度上,Redis要比Memcached快,这是基于一些Benchmarks的测试结果得出的,而且在内存使用上,Redis突破了物理内存限制,可以使用虚拟内存

(2)数据类型比Memcached要多,Redis支持List、Set、SortedSet、HashMap等多种数据结构;

(3)持久化方面,Memcached没有相应的持久化机制,而Redis有RDB快照和AOF日志两种形式结合做持久化,很大限度上保证了数据的持久化和安全性,不像Memcached断电后全都没了。

    Redis不失为Memcached的一种良好的替代方案。

    MongoDB是一种适合做格式化文档的存储及查询的NoSql数据库,它可以可以用来做海量数据存储,毕竟是一种硬盘数据库,和Redis这种缓存数据库没什么可比性。网上那么多讨论的,这里就不说了,见参考文档1。

    Redis也可以在硬盘上存储数据以及跨节点复制数据,也可以用来做队列系统,据说GitHub就采用Redis作为其基础架构。

2 安装部署

    目前官方发布的最新稳定版是2.8.6,我们就以它为例进行下述的操作及说明。

2.1 Centos安装部署

    安装步骤如下:

(1)将redis-2.8.6.tar.gz安装包拷贝到我们的指定目录下;

(2)使用命令tar -zxvf redis-2.8.6.tar.gz将tar包解压缩,得到redis-2.8.6目录;

(3)进入redis-2.8.6目录,执行make命令进行编译;

(4)编译结束之后,配置redis.conf文件,将“daemonize”属性设置为“yes”,表示我们会以后台进程形式启动Redis服务;将“port”属性设置为指定的端口,这里默认为“6379”;将“logfile”属性设置为指定的日志路径,其余的属性可以保持默认。

(5)使用命令src/redis-server ./redis.conf启动Redis服务,启动之后,可以在刚才配置的日志路径中看到如下类似信息:

 Redis学习

这个帅气的图标就是Redis的LOGO了。

(6)执行客户端命令,验证服务是否正常:

 Redis学习

(7)Redis服务停止命令,src/redis-cli shutdown

2.2 conf配置文件说明

    刚才在部署的时候,提到了redis.conf这个文件,这是整个Redis的最重要的配置文件,对于其中的一些参数,做如下说明:

属性

说明

daemonize

如果值是“yes”,则启动服务的时候是后台守护进程形式,如果值是“no”,则相反

pidfile

指定存储Redis进程号的文件路径

port

指定当前Redis服务的端口,默认为6379

tcp-backlog

此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。

timeout

客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。

tcp-keepalive

如果值非0,单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是60S。

loglevel

Redis总共支持四个级别:debug、verbose、notice、warning

Debug:记录很多信息,用于开发和测试;

Varbose:有用的信息,不像debug会记录那么多;

Notice:普通的verbose,常用于生产环境;

Warning:只有非常重要或者严重的信息会记录到日志;

默认是notice级别。

logfile

日志的存储路径

databases

可用的数据库数,默认值为16,默认数据库为0,数据库范围在0-(database-1)之间,个人觉得DB的概念类似于命名空间

save

保存数据库快照信息到磁盘,其对应的值有两个,比如save 300 10表示:300秒内至少有300个key被改变时,触发保存信息到磁盘的事件。

stop-writes-on-bgsave-error

当持久化出现错误之后,是否继续提供写服务

rdbcompression

持久化到RDB文件时,是否压缩,“yes”为压缩,“no”则反之

rdbchecksum

读取和写入的时候是否支持CRC64校验,默认是开启的

dbfilename

镜像文件的名字

dir

当前工作目录,配置文件和镜像文件等都在此目录下

masterauth

设置访问master服务器的密码

slave-serve-stale-data

当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置“yes”,slave服务器可以继续接受客户端的请求,否则,会返回给请求的客户端如下信息“SYNC with master in progress

slave-read-only

是否允许slave服务器节点只提供读服务

repl-disable-tcp-nodelay

指定向slave同步数据时,是否禁用socket的NO_DELAY选项。若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到slave的时间。若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。

slave-priority

指定slave的优先级。在不只1个slave存在的部署环境下,当master宕机时,Redis Sentinel会将priority值最小的slave提升为master。需要注意的是,若该配置项为0,则对应的slave永远不会自动提升为master。

appendonly

开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。默认是不开启的。

appendfilename

默认为appendonly.aof

appendfsync

设置aof的同步频率,有三种选择always、everysec、no,默认是everysec表示每秒同步一次。

no-appendfsync-on-rewrite

指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写afo文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。

auto-aof-rewrite-percentage

指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件增长量超过上次afo文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite

auto-aof-rewrite-min-size

指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。

lua-time-limit

一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000

notify-keyspace-events

见参考3,按键通知事件

aof-rewrite-incremental-fsync

aof rewrite过程中,是否采取增量文件同步策略,默认为“yes”。 rewrite过程中,每32M数据进行一次文件同步,这样可以减少aof大文件写入对磁盘的操作次数

 

3 基本原理

    Redis是C编写的,对外开放的List、Set、SortedSet等数据结构都有着自己独到的实现和算法,其内部的实现原理见参考4,这里就不卖弄了,我也在学习。

    需求推动技术的进步,Redis可以应用在如下几种场景中:

(1)取最新N个数据操作

(2)排行榜操作,Top N

(3)需要精准设定过期时间的应用

(4)计数器应用

(5)获取某段时间内所有数据的排重值,uniq操作

(6)实时系统

(7)发布/订阅系统

(8)队列系统

(9)缓存

    具体的场景分析见参考9。

4 客户端操作

    使用src/redis-cli可以打开客户端对话框,输入命令即可。目前Redis支持String、Map、List、Set、SortedSets等五种数据结构以及支持订阅、事务等操作。每种命令的操作及详细解释见参考8。

5 Java操作Redis

    目前Jedis是官方推荐的比较好的Redis操作API包,我们这里结合Spring来看下如何使用Redis这一神器。 

    首先在pom文件中引入jredis包:

1 <dependency>

2    <groupId>redis.clients</groupId>

3    <artifactId>jedis</artifactId>

4    <version>2.1.0</version>

5 </dependency>

  其次,在Spring的resource目录中增加Redis的配置文件/src/main/resources/redis.properties

 1 # Redis settings

 2 redis.host=192.168.1.106

 3 redis.port=6379

 4 redis.pass=

 5 redis.timeout=0

 6 

 7 redis.maxIdle=300

 8 redis.maxActive=600

 9 redis.maxWait=1000

10 redis.testOnBorrow=true

  接着,在Spring的配置文件中配置好Redis的相关Bean注入:

 1 <?xml version="1.0" encoding="UTF-8"?>  

 2 <beans xmlns="http://www.springframework.org/schema/beans"  

 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  

 4     xmlns:context="http://www.springframework.org/schema/context"  

 5     xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  

 6     xmlns:aop="http://www.springframework.org/schema/aop"  

 7     xsi:schemaLocation="  

 8             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  

 9             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  

10 

11     <context:property-placeholder location="classpath:redis.properties" />  

12     <context:component-scan base-package="com.scott.demo" />

13     

14     <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />

15     

16     <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">

17         <property name="maxActive" value="50" />

18         <property name="maxIdle" value="8" />

19         <property name="maxWait" value="1000" />

20         <property name="testOnBorrow" value="true"/>

21         <property name="testOnReturn" value="true"/>

22         <!-- <property name="testWhileIdle" value="true"/> -->

23     </bean>

24 

25     <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"  scope="singleton">

26         <constructor-arg index="0" ref="jedisPoolConfig" />

27         <constructor-arg index="1">

28             <list>

29                 <bean class="redis.clients.jedis.JedisShardInfo">

30                     <constructor-arg name="host" value="${redis.host}" />

31                     <constructor-arg name="port" value="${redis.port}" />

32                     <constructor-arg name="timeout" value="${redis.timeout}" />

33                     <constructor-arg name="weight" value="1" />

34                 </bean>

35             </list>

36         </constructor-arg>

37     </bean>

38 </beans>

  配置文件准备就绪,下面是获取Redis客户端对象的类:

 1 package com.scott.demo.redis.service.impl;

 2 

 3 import org.slf4j.Logger;

 4 import org.slf4j.LoggerFactory;

 5 import org.springframework.beans.factory.annotation.Autowired;

 6 import org.springframework.stereotype.Repository;

 7 

 8 import com.scott.demo.redis.service.RedisService;

 9 

10 import redis.clients.jedis.ShardedJedis;

11 import redis.clients.jedis.ShardedJedisPool;

12 

13 /**

14  * @author Scott

15  * @date 2014年2月23日

16  * @description

17  */

18 @Repository("redisService")

19 public class RedisServiceImpl implements RedisService {

20 

21     private static final Logger log = LoggerFactory.getLogger(RedisServiceImpl.class);

22 

23     @Autowired

24     private ShardedJedisPool shardedJedisPool;

25 

26     public ShardedJedis getRedisClient() {

27         try {

28             ShardedJedis shardJedis = shardedJedisPool.getResource();

29             return shardJedis;

30         } catch (Exception e) {

31             log.error("getRedisClent error", e);

32         }

33         return null;

34     }

35 

36     public void returnResource(ShardedJedis shardedJedis) {

37         shardedJedisPool.returnResource(shardedJedis);

38     }

39 

40     public void returnResource(ShardedJedis shardedJedis, boolean broken) {

41         if (broken) {

42             shardedJedisPool.returnBrokenResource(shardedJedis);

43         } else {

44             shardedJedisPool.returnResource(shardedJedis);

45         }

46     }

47 

48 }

 

  根据上述类,可以在下面的RedisClient类中实现Redis的相关操作:

   1 package com.scott.demo.redis;

   2 

   3 import java.util.Collection;

   4 import java.util.List;

   5 import java.util.Map;

   6 import java.util.Set;

   7 

   8 import org.slf4j.Logger;

   9 import org.slf4j.LoggerFactory;

  10 import org.springframework.beans.factory.annotation.Autowired;

  11 

  12 import com.scott.demo.redis.service.impl.RedisServiceImpl;

  13 

  14 import redis.clients.jedis.BinaryClient.LIST_POSITION;

  15 import redis.clients.jedis.Jedis;

  16 import redis.clients.jedis.JedisShardInfo;

  17 import redis.clients.jedis.ShardedJedis;

  18 import redis.clients.jedis.ShardedJedisPipeline;

  19 import redis.clients.jedis.SortingParams;

  20 import redis.clients.jedis.Tuple;

  21 

  22 /**

  23  * @author Scott

  24  * @date 2014年2月23日

  25  * @description

  26  */

  27 public class RedisClient {

  28 

  29     private static final Logger log = LoggerFactory.getLogger(RedisClient.class);

  30 

  31     @Autowired

  32     private RedisServiceImpl redisService;

  33 

  34     public void disconnect() {

  35         ShardedJedis shardedJedis = redisService.getRedisClient();

  36         shardedJedis.disconnect();

  37     }

  38 

  39     /**

  40      * 设置单个值

  41      */

  42     public String set(String key, String value) {

  43         String result = null;

  44 

  45         ShardedJedis shardedJedis = redisService.getRedisClient();

  46         if (shardedJedis == null) {

  47             return result;

  48         }

  49         boolean flag = false;

  50         try {

  51             result = shardedJedis.set(key, value);

  52         } catch (Exception e) {

  53             log.error(e.getMessage(), e);

  54             flag = true;

  55         } finally {

  56             redisService.returnResource(shardedJedis, flag);

  57         }

  58         return result;

  59     }

  60 

  61     /**

  62      * 获取单个值

  63      */

  64     public String get(String key) {

  65         String result = null;

  66         ShardedJedis shardedJedis = redisService.getRedisClient();

  67         if (shardedJedis == null) {

  68             return result;

  69         }

  70 

  71         boolean flag = false;

  72         try {

  73             result = shardedJedis.get(key);

  74 

  75         } catch (Exception e) {

  76             log.error(e.getMessage(), e);

  77             flag = true;

  78         } finally {

  79             redisService.returnResource(shardedJedis, flag);

  80         }

  81         return result;

  82     }

  83 

  84     public Boolean exists(String key) {

  85         Boolean result = false;

  86         ShardedJedis shardedJedis = redisService.getRedisClient();

  87         if (shardedJedis == null) {

  88             return result;

  89         }

  90         boolean flag = false;

  91         try {

  92             result = shardedJedis.exists(key);

  93         } catch (Exception e) {

  94             log.error(e.getMessage(), e);

  95             flag = true;

  96         } finally {

  97             redisService.returnResource(shardedJedis, flag);

  98         }

  99         return result;

 100     }

 101 

 102     public String type(String key) {

 103         String result = null;

 104         ShardedJedis shardedJedis = redisService.getRedisClient();

 105         if (shardedJedis == null) {

 106             return result;

 107         }

 108         boolean flag = false;

 109         try {

 110             result = shardedJedis.type(key);

 111 

 112         } catch (Exception e) {

 113             log.error(e.getMessage(), e);

 114             flag = true;

 115         } finally {

 116             redisService.returnResource(shardedJedis, flag);

 117         }

 118         return result;

 119     }

 120 

 121     /**

 122      * 在某段时间后失效

 123      */

 124     public Long expire(String key, int seconds) {

 125         Long result = null;

 126         ShardedJedis shardedJedis = redisService.getRedisClient();

 127         if (shardedJedis == null) {

 128             return result;

 129         }

 130         boolean flag = false;

 131         try {

 132             result = shardedJedis.expire(key, seconds);

 133 

 134         } catch (Exception e) {

 135             log.error(e.getMessage(), e);

 136             flag = true;

 137         } finally {

 138             redisService.returnResource(shardedJedis, flag);

 139         }

 140         return result;

 141     }

 142 

 143     /**

 144      * 在某个时间点失效

 145      */

 146     public Long expireAt(String key, long time) {

 147         Long result = null;

 148         ShardedJedis shardedJedis = redisService.getRedisClient();

 149         if (shardedJedis == null) {

 150             return result;

 151         }

 152         boolean flag = false;

 153         try {

 154             result = shardedJedis.expireAt(key, time);

 155 

 156         } catch (Exception e) {

 157             log.error(e.getMessage(), e);

 158             flag = true;

 159         } finally {

 160             redisService.returnResource(shardedJedis, flag);

 161         }

 162         return result;

 163     }

 164 

 165     public Long ttl(String key) {

 166         Long result = null;

 167         ShardedJedis shardedJedis = redisService.getRedisClient();

 168         if (shardedJedis == null) {

 169             return result;

 170         }

 171         boolean flag = false;

 172         try {

 173             result = shardedJedis.ttl(key);

 174 

 175         } catch (Exception e) {

 176             log.error(e.getMessage(), e);

 177             flag = true;

 178         } finally {

 179             redisService.returnResource(shardedJedis, flag);

 180         }

 181         return result;

 182     }

 183 

 184     public boolean setbit(String key, long offset, boolean value) {

 185 

 186         ShardedJedis shardedJedis = redisService.getRedisClient();

 187         boolean result = false;

 188         if (shardedJedis == null) {

 189             return result;

 190         }

 191         boolean flag = false;

 192         try {

 193             result = shardedJedis.setbit(key, offset, value);

 194         } catch (Exception e) {

 195             log.error(e.getMessage(), e);

 196             flag = true;

 197         } finally {

 198             redisService.returnResource(shardedJedis, flag);

 199         }

 200         return result;

 201     }

 202 

 203     public boolean getbit(String key, long offset) {

 204         ShardedJedis shardedJedis = redisService.getRedisClient();

 205         boolean result = false;

 206         if (shardedJedis == null) {

 207             return result;

 208         }

 209         boolean flag = false;

 210 

 211         try {

 212             result = shardedJedis.getbit(key, offset);

 213         } catch (Exception e) {

 214             log.error(e.getMessage(), e);

 215             flag = true;

 216         } finally {

 217             redisService.returnResource(shardedJedis, flag);

 218         }

 219         return result;

 220     }

 221 

 222     public long setrange(String key, long offset, String value) {

 223         ShardedJedis shardedJedis = redisService.getRedisClient();

 224         long result = 0;

 225         if (shardedJedis == null) {

 226             return result;

 227         }

 228         boolean flag = false;

 229         try {

 230             result = shardedJedis.setrange(key, offset, value);

 231         } catch (Exception e) {

 232             log.error(e.getMessage(), e);

 233             flag = true;

 234         } finally {

 235             redisService.returnResource(shardedJedis, flag);

 236         }

 237         return result;

 238     }

 239 

 240     public String getrange(String key, long startOffset, long endOffset) {

 241         ShardedJedis shardedJedis = redisService.getRedisClient();

 242         String result = null;

 243         if (shardedJedis == null) {

 244             return result;

 245         }

 246         boolean flag = false;

 247         try {

 248             result = shardedJedis.getrange(key, startOffset, endOffset);

 249 

 250         } catch (Exception e) {

 251             log.error(e.getMessage(), e);

 252             flag = true;

 253         } finally {

 254             redisService.returnResource(shardedJedis, flag);

 255         }

 256         return result;

 257     }

 258 

 259     public String getSet(String key, String value) {

 260         String result = null;

 261         ShardedJedis shardedJedis = redisService.getRedisClient();

 262         if (shardedJedis == null) {

 263             return result;

 264         }

 265         boolean flag = false;

 266         try {

 267             result = shardedJedis.getSet(key, value);

 268         } catch (Exception e) {

 269             log.error(e.getMessage(), e);

 270             flag = true;

 271         } finally {

 272             redisService.returnResource(shardedJedis, flag);

 273         }

 274         return result;

 275     }

 276 

 277     public Long setnx(String key, String value) {

 278         Long result = null;

 279         ShardedJedis shardedJedis = redisService.getRedisClient();

 280         if (shardedJedis == null) {

 281             return result;

 282         }

 283         boolean flag = false;

 284         try {

 285             result = shardedJedis.setnx(key, value);

 286         } catch (Exception e) {

 287             log.error(e.getMessage(), e);

 288             flag = true;

 289         } finally {

 290             redisService.returnResource(shardedJedis, flag);

 291         }

 292         return result;

 293     }

 294 

 295     public String setex(String key, int seconds, String value) {

 296         String result = null;

 297         ShardedJedis shardedJedis = redisService.getRedisClient();

 298         if (shardedJedis == null) {

 299             return result;

 300         }

 301         boolean flag = false;

 302         try {

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

 304 

 305         } catch (Exception e) {

 306             log.error(e.getMessage(), e);

 307             flag = true;

 308         } finally {

 309             redisService.returnResource(shardedJedis, flag);

 310         }

 311         return result;

 312     }

 313 

 314     public Long decrBy(String key, long integer) {

 315         Long result = null;

 316         ShardedJedis shardedJedis = redisService.getRedisClient();

 317         if (shardedJedis == null) {

 318             return result;

 319         }

 320         boolean flag = false;

 321         try {

 322             result = shardedJedis.decrBy(key, integer);

 323 

 324         } catch (Exception e) {

 325             log.error(e.getMessage(), e);

 326             flag = true;

 327         } finally {

 328             redisService.returnResource(shardedJedis, flag);

 329         }

 330         return result;

 331     }

 332 

 333     public Long decr(String key) {

 334         Long result = null;

 335         ShardedJedis shardedJedis = redisService.getRedisClient();

 336         if (shardedJedis == null) {

 337             return result;

 338         }

 339         boolean flag = false;

 340         try {

 341             result = shardedJedis.decr(key);

 342 

 343         } catch (Exception e) {

 344             log.error(e.getMessage(), e);

 345             flag = true;

 346         } finally {

 347             redisService.returnResource(shardedJedis, flag);

 348         }

 349         return result;

 350     }

 351 

 352     public Long incrBy(String key, long integer) {

 353         Long result = null;

 354         ShardedJedis shardedJedis = redisService.getRedisClient();

 355         if (shardedJedis == null) {

 356             return result;

 357         }

 358         boolean flag = false;

 359         try {

 360             result = shardedJedis.incrBy(key, integer);

 361 

 362         } catch (Exception e) {

 363             log.error(e.getMessage(), e);

 364             flag = true;

 365         } finally {

 366             redisService.returnResource(shardedJedis, flag);

 367         }

 368         return result;

 369     }

 370 

 371     public Long incr(String key) {

 372         Long result = null;

 373         ShardedJedis shardedJedis = redisService.getRedisClient();

 374         if (shardedJedis == null) {

 375             return result;

 376         }

 377         boolean flag = false;

 378         try {

 379             result = shardedJedis.incr(key);

 380 

 381         } catch (Exception e) {

 382             log.error(e.getMessage(), e);

 383             flag = true;

 384         } finally {

 385             redisService.returnResource(shardedJedis, flag);

 386         }

 387         return result;

 388     }

 389 

 390     public Long append(String key, String value) {

 391         Long result = null;

 392         ShardedJedis shardedJedis = redisService.getRedisClient();

 393         if (shardedJedis == null) {

 394             return result;

 395         }

 396         boolean flag = false;

 397         try {

 398             result = shardedJedis.append(key, value);

 399 

 400         } catch (Exception e) {

 401             log.error(e.getMessage(), e);

 402             flag = true;

 403         } finally {

 404             redisService.returnResource(shardedJedis, flag);

 405         }

 406         return result;

 407     }

 408 

 409     public String substr(String key, int start, int end) {

 410         String result = null;

 411         ShardedJedis shardedJedis = redisService.getRedisClient();

 412         if (shardedJedis == null) {

 413             return result;

 414         }

 415         boolean flag = false;

 416         try {

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

 418 

 419         } catch (Exception e) {

 420             log.error(e.getMessage(), e);

 421             flag = true;

 422         } finally {

 423             redisService.returnResource(shardedJedis, flag);

 424         }

 425         return result;

 426     }

 427 

 428     public Long hset(String key, String field, String value) {

 429         Long result = null;

 430         ShardedJedis shardedJedis = redisService.getRedisClient();

 431         if (shardedJedis == null) {

 432             return result;

 433         }

 434         boolean flag = false;

 435         try {

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

 437 

 438         } catch (Exception e) {

 439             log.error(e.getMessage(), e);

 440             flag = true;

 441         } finally {

 442             redisService.returnResource(shardedJedis, flag);

 443         }

 444         return result;

 445     }

 446 

 447     public String hget(String key, String field) {

 448         String result = null;

 449         ShardedJedis shardedJedis = redisService.getRedisClient();

 450         if (shardedJedis == null) {

 451             return result;

 452         }

 453         boolean flag = false;

 454         try {

 455             result = shardedJedis.hget(key, field);

 456 

 457         } catch (Exception e) {

 458             log.error(e.getMessage(), e);

 459             flag = true;

 460         } finally {

 461             redisService.returnResource(shardedJedis, flag);

 462         }

 463         return result;

 464     }

 465 

 466     public Long hsetnx(String key, String field, String value) {

 467         Long result = null;

 468         ShardedJedis shardedJedis = redisService.getRedisClient();

 469         if (shardedJedis == null) {

 470             return result;

 471         }

 472         boolean flag = false;

 473         try {

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

 475 

 476         } catch (Exception e) {

 477             log.error(e.getMessage(), e);

 478             flag = true;

 479         } finally {

 480             redisService.returnResource(shardedJedis, flag);

 481         }

 482         return result;

 483     }

 484 

 485     public String hmset(String key, Map<String, String> hash) {

 486         String result = null;

 487         ShardedJedis shardedJedis = redisService.getRedisClient();

 488         if (shardedJedis == null) {

 489             return result;

 490         }

 491         boolean flag = false;

 492         try {

 493             result = shardedJedis.hmset(key, hash);

 494 

 495         } catch (Exception e) {

 496             log.error(e.getMessage(), e);

 497             flag = true;

 498         } finally {

 499             redisService.returnResource(shardedJedis, flag);

 500         }

 501         return result;

 502     }

 503 

 504     public List<String> hmget(String key, String... fields) {

 505         List<String> result = null;

 506         ShardedJedis shardedJedis = redisService.getRedisClient();

 507         if (shardedJedis == null) {

 508             return result;

 509         }

 510         boolean flag = false;

 511         try {

 512             result = shardedJedis.hmget(key, fields);

 513 

 514         } catch (Exception e) {

 515             log.error(e.getMessage(), e);

 516             flag = true;

 517         } finally {

 518             redisService.returnResource(shardedJedis, flag);

 519         }

 520         return result;

 521     }

 522 

 523     public Long hincrBy(String key, String field, long value) {

 524         Long result = null;

 525         ShardedJedis shardedJedis = redisService.getRedisClient();

 526         if (shardedJedis == null) {

 527             return result;

 528         }

 529         boolean flag = false;

 530         try {

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

 532 

 533         } catch (Exception e) {

 534             log.error(e.getMessage(), e);

 535             flag = true;

 536         } finally {

 537             redisService.returnResource(shardedJedis, flag);

 538         }

 539         return result;

 540     }

 541 

 542     public Boolean hexists(String key, String field) {

 543         Boolean result = false;

 544         ShardedJedis shardedJedis = redisService.getRedisClient();

 545         if (shardedJedis == null) {

 546             return result;

 547         }

 548         boolean flag = false;

 549         try {

 550             result = shardedJedis.hexists(key, field);

 551 

 552         } catch (Exception e) {

 553             log.error(e.getMessage(), e);

 554             flag = true;

 555         } finally {

 556             redisService.returnResource(shardedJedis, flag);

 557         }

 558         return result;

 559     }

 560 

 561     public Long del(String key) {

 562         Long result = null;

 563         ShardedJedis shardedJedis = redisService.getRedisClient();

 564         if (shardedJedis == null) {

 565             return result;

 566         }

 567         boolean flag = false;

 568         try {

 569             result = shardedJedis.del(key);

 570 

 571         } catch (Exception e) {

 572             log.error(e.getMessage(), e);

 573             flag = true;

 574         } finally {

 575             redisService.returnResource(shardedJedis, flag);

 576         }

 577         return result;

 578     }

 579 

 580     public Long hdel(String key, String field) {

 581         Long result = null;

 582         ShardedJedis shardedJedis = redisService.getRedisClient();

 583         if (shardedJedis == null) {

 584             return result;

 585         }

 586         boolean flag = false;

 587         try {

 588             result = shardedJedis.hdel(key, field);

 589 

 590         } catch (Exception e) {

 591             log.error(e.getMessage(), e);

 592             flag = true;

 593         } finally {

 594             redisService.returnResource(shardedJedis, flag);

 595         }

 596         return result;

 597     }

 598 

 599     public Long hlen(String key) {

 600         Long result = null;

 601         ShardedJedis shardedJedis = redisService.getRedisClient();

 602         if (shardedJedis == null) {

 603             return result;

 604         }

 605         boolean flag = false;

 606         try {

 607             result = shardedJedis.hlen(key);

 608 

 609         } catch (Exception e) {

 610             log.error(e.getMessage(), e);

 611             flag = true;

 612         } finally {

 613             redisService.returnResource(shardedJedis, flag);

 614         }

 615         return result;

 616     }

 617 

 618     public Set<String> hkeys(String key) {

 619         Set<String> result = null;

 620         ShardedJedis shardedJedis = redisService.getRedisClient();

 621         if (shardedJedis == null) {

 622             return result;

 623         }

 624         boolean flag = false;

 625         try {

 626             result = shardedJedis.hkeys(key);

 627 

 628         } catch (Exception e) {

 629             log.error(e.getMessage(), e);

 630             flag = true;

 631         } finally {

 632             redisService.returnResource(shardedJedis, flag);

 633         }

 634         return result;

 635     }

 636 

 637     public List<String> hvals(String key) {

 638         List<String> result = null;

 639         ShardedJedis shardedJedis = redisService.getRedisClient();

 640         if (shardedJedis == null) {

 641             return result;

 642         }

 643         boolean flag = false;

 644         try {

 645             result = shardedJedis.hvals(key);

 646 

 647         } catch (Exception e) {

 648             log.error(e.getMessage(), e);

 649             flag = true;

 650         } finally {

 651             redisService.returnResource(shardedJedis, flag);

 652         }

 653         return result;

 654     }

 655 

 656     public Map<String, String> hgetAll(String key) {

 657         Map<String, String> result = null;

 658         ShardedJedis shardedJedis = redisService.getRedisClient();

 659         if (shardedJedis == null) {

 660             return result;

 661         }

 662         boolean flag = false;

 663         try {

 664             result = shardedJedis.hgetAll(key);

 665 

 666         } catch (Exception e) {

 667             log.error(e.getMessage(), e);

 668             flag = true;

 669         } finally {

 670             redisService.returnResource(shardedJedis, flag);

 671         }

 672         return result;

 673     }

 674 

 675     /**

 676      * 在redis list尾部增加一个String

 677      * */

 678     public Long rpush(String key, String string) {

 679         Long result = null;

 680         ShardedJedis shardedJedis = redisService.getRedisClient();

 681         if (shardedJedis == null) {

 682             return result;

 683         }

 684         boolean flag = false;

 685         try {

 686             result = shardedJedis.rpush(key, string);

 687 

 688         } catch (Exception e) {

 689             log.error(e.getMessage(), e);

 690             flag = true;

 691         } finally {

 692             redisService.returnResource(shardedJedis, flag);

 693         }

 694         return result;

 695     }

 696 

 697     /**

 698      * 在redis list头部增加一个String

 699      * */

 700     public Long lpush(String key, String string) {

 701         Long result = null;

 702         ShardedJedis shardedJedis = redisService.getRedisClient();

 703         if (shardedJedis == null) {

 704             return result;

 705         }

 706         boolean flag = false;

 707         try {

 708             result = shardedJedis.lpush(key, string);

 709 

 710         } catch (Exception e) {

 711             log.error(e.getMessage(), e);

 712             flag = true;

 713         } finally {

 714             redisService.returnResource(shardedJedis, flag);

 715         }

 716         return result;

 717     }

 718 

 719     public Long llen(String key) {

 720         Long result = null;

 721         ShardedJedis shardedJedis = redisService.getRedisClient();

 722         if (shardedJedis == null) {

 723             return result;

 724         }

 725         boolean flag = false;

 726         try {

 727             result = shardedJedis.llen(key);

 728 

 729         } catch (Exception e) {

 730             log.error(e.getMessage(), e);

 731             flag = true;

 732         } finally {

 733             redisService.returnResource(shardedJedis, flag);

 734         }

 735         return result;

 736     }

 737 

 738     public List<String> lrange(String key, long start, long end) {

 739         List<String> result = null;

 740         ShardedJedis shardedJedis = redisService.getRedisClient();

 741         if (shardedJedis == null) {

 742             return result;

 743         }

 744         boolean flag = false;

 745         try {

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

 747 

 748         } catch (Exception e) {

 749             log.error(e.getMessage(), e);

 750             flag = true;

 751         } finally {

 752             redisService.returnResource(shardedJedis, flag);

 753         }

 754         return result;

 755     }

 756 

 757     public String ltrim(String key, long start, long end) {

 758         String result = null;

 759         ShardedJedis shardedJedis = redisService.getRedisClient();

 760         if (shardedJedis == null) {

 761             return result;

 762         }

 763         boolean flag = false;

 764         try {

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

 766 

 767         } catch (Exception e) {

 768             log.error(e.getMessage(), e);

 769             flag = true;

 770         } finally {

 771             redisService.returnResource(shardedJedis, flag);

 772         }

 773         return result;

 774     }

 775 

 776     public String lIndex(String key, long index) {

 777         String result = null;

 778         ShardedJedis shardedJedis = redisService.getRedisClient();

 779         if (shardedJedis == null) {

 780             return result;

 781         }

 782         boolean flag = false;

 783         try {

 784             result = shardedJedis.lindex(key, index);

 785 

 786         } catch (Exception e) {

 787             log.error(e.getMessage(), e);

 788             flag = true;

 789         } finally {

 790             redisService.returnResource(shardedJedis, flag);

 791         }

 792         return result;

 793     }

 794 

 795     public String lset(String key, long index, String value) {

 796         String result = null;

 797         ShardedJedis shardedJedis = redisService.getRedisClient();

 798         if (shardedJedis == null) {

 799             return result;

 800         }

 801         boolean flag = false;

 802         try {

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

 804 

 805         } catch (Exception e) {

 806             log.error(e.getMessage(), e);

 807             flag = true;

 808         } finally {

 809             redisService.returnResource(shardedJedis, flag);

 810         }

 811         return result;

 812     }

 813 

 814     public Long lrem(String key, long count, String value) {

 815         Long result = null;

 816         ShardedJedis shardedJedis = redisService.getRedisClient();

 817         if (shardedJedis == null) {

 818             return result;

 819         }

 820         boolean flag = false;

 821         try {

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

 823 

 824         } catch (Exception e) {

 825             log.error(e.getMessage(), e);

 826             flag = true;

 827         } finally {

 828             redisService.returnResource(shardedJedis, flag);

 829         }

 830         return result;

 831     }

 832 

 833     /**

 834      * 从redis list头部取出一个key

 835      * */

 836     public String lpop(String key) {

 837         String result = null;

 838         ShardedJedis shardedJedis = redisService.getRedisClient();

 839         if (shardedJedis == null) {

 840             return result;

 841         }

 842         boolean flag = false;

 843         try {

 844             result = shardedJedis.lpop(key);

 845 

 846         } catch (Exception e) {

 847             log.error(e.getMessage(), e);

 848             flag = true;

 849         } finally {

 850             redisService.returnResource(shardedJedis, flag);

 851         }

 852         return result;

 853     }

 854 

 855     /**

 856      * 从redis list尾部取出一个key

 857      * */

 858     public String rpop(String key) {

 859         String result = null;

 860         ShardedJedis shardedJedis = redisService.getRedisClient();

 861         if (shardedJedis == null) {

 862             return result;

 863         }

 864         boolean flag = false;

 865         try {

 866             result = shardedJedis.rpop(key);

 867 

 868         } catch (Exception e) {

 869             log.error(e.getMessage(), e);

 870             flag = true;

 871         } finally {

 872             redisService.returnResource(shardedJedis, flag);

 873         }

 874         return result;

 875     }

 876 

 877     public Long sadd(String key, String member) {

 878         Long result = null;

 879         ShardedJedis shardedJedis = redisService.getRedisClient();

 880         if (shardedJedis == null) {

 881             return result;

 882         }

 883         boolean flag = false;

 884         try {

 885             result = shardedJedis.sadd(key, member);

 886 

 887         } catch (Exception e) {

 888             log.error(e.getMessage(), e);

 889             flag = true;

 890         } finally {

 891             redisService.returnResource(shardedJedis, flag);

 892         }

 893         return result;

 894     }

 895 

 896     public Set<String> smembers(String key) {

 897         Set<String> result = null;

 898         ShardedJedis shardedJedis = redisService.getRedisClient();

 899         if (shardedJedis == null) {

 900             return result;

 901         }

 902         boolean flag = false;

 903         try {

 904             result = shardedJedis.smembers(key);

 905 

 906         } catch (Exception e) {

 907             log.error(e.getMessage(), e);

 908             flag = true;

 909         } finally {

 910             redisService.returnResource(shardedJedis, flag);

 911         }

 912         return result;

 913     }

 914 

 915     public Long srem(String key, String member) {

 916         ShardedJedis shardedJedis = redisService.getRedisClient();

 917 

 918         Long result = null;

 919         if (shardedJedis == null) {

 920             return result;

 921         }

 922         boolean flag = false;

 923         try {

 924             result = shardedJedis.srem(key, member);

 925         } catch (Exception e) {

 926             log.error(e.getMessage(), e);

 927             flag = true;

 928         } finally {

 929             redisService.returnResource(shardedJedis, flag);

 930         }

 931         return result;

 932     }

 933 

 934     public String spop(String key) {

 935         ShardedJedis shardedJedis = redisService.getRedisClient();

 936         String result = null;

 937         if (shardedJedis == null) {

 938             return result;

 939         }

 940         boolean flag = false;

 941         try {

 942             result = shardedJedis.spop(key);

 943         } catch (Exception e) {

 944             log.error(e.getMessage(), e);

 945             flag = true;

 946         } finally {

 947             redisService.returnResource(shardedJedis, flag);

 948         }

 949         return result;

 950     }

 951 

 952     public Long scard(String key) {

 953         ShardedJedis shardedJedis = redisService.getRedisClient();

 954         Long result = null;

 955         if (shardedJedis == null) {

 956             return result;

 957         }

 958         boolean flag = false;

 959         try {

 960             result = shardedJedis.scard(key);

 961 

 962         } catch (Exception e) {

 963             log.error(e.getMessage(), e);

 964             flag = true;

 965         } finally {

 966             redisService.returnResource(shardedJedis, flag);

 967         }

 968         return result;

 969     }

 970 

 971     public Boolean sismember(String key, String member) {

 972         ShardedJedis shardedJedis = redisService.getRedisClient();

 973         Boolean result = null;

 974         if (shardedJedis == null) {

 975             return result;

 976         }

 977         boolean flag = false;

 978         try {

 979             result = shardedJedis.sismember(key, member);

 980         } catch (Exception e) {

 981             log.error(e.getMessage(), e);

 982             flag = true;

 983         } finally {

 984             redisService.returnResource(shardedJedis, flag);

 985         }

 986         return result;

 987     }

 988 

 989     public String srandmember(String key) {

 990         ShardedJedis shardedJedis = redisService.getRedisClient();

 991         String result = null;

 992         if (shardedJedis == null) {

 993             return result;

 994         }

 995         boolean flag = false;

 996         try {

 997             result = shardedJedis.srandmember(key);

 998         } catch (Exception e) {

 999             log.error(e.getMessage(), e);

1000             flag = true;

1001         } finally {

1002             redisService.returnResource(shardedJedis, flag);

1003         }

1004         return result;

1005     }

1006 

1007     public Long zadd(String key, double score, String member) {

1008         Long result = null;

1009         ShardedJedis shardedJedis = redisService.getRedisClient();

1010         if (shardedJedis == null) {

1011             return result;

1012         }

1013         boolean flag = false;

1014         try {

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

1016         } catch (Exception e) {

1017             log.error(e.getMessage(), e);

1018             flag = true;

1019         } finally {

1020             redisService.returnResource(shardedJedis, flag);

1021         }

1022         return result;

1023     }

1024 

1025     public Set<String> zrange(String key, int start, int end) {

1026         Set<String> result = null;

1027         ShardedJedis shardedJedis = redisService.getRedisClient();

1028         if (shardedJedis == null) {

1029             return result;

1030         }

1031         boolean flag = false;

1032         try {

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

1034         } catch (Exception e) {

1035             log.error(e.getMessage(), e);

1036             flag = true;

1037         } finally {

1038             redisService.returnResource(shardedJedis, flag);

1039         }

1040         return result;

1041     }

1042 

1043     public Long zrem(String key, String member) {

1044         Long result = null;

1045         ShardedJedis shardedJedis = redisService.getRedisClient();

1046         if (shardedJedis == null) {

1047             return result;

1048         }

1049         boolean flag = false;

1050         try {

1051             result = shardedJedis.zrem(key, member);

1052         } catch (Exception e) {

1053             log.error(e.getMessage(), e);

1054             flag = true;

1055         } finally {

1056             redisService.returnResource(shardedJedis, flag);

1057         }

1058         return result;

1059     }

1060 

1061     public Double zincrby(String key, double score, String member) {

1062         Double result = null;

1063         ShardedJedis shardedJedis = redisService.getRedisClient();

1064         if (shardedJedis == null) {

1065             return result;

1066         }

1067         boolean flag = false;

1068         try {

1069 

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

1071 

1072         } catch (Exception e) {

1073             log.error(e.getMessage(), e);

1074             flag = true;

1075         } finally {

1076             redisService.returnResource(shardedJedis, flag);

1077         }

1078         return result;

1079     }

1080 

1081     public Long zrank(String key, String member) {

1082         Long result = null;

1083         ShardedJedis shardedJedis = redisService.getRedisClient();

1084         if (shardedJedis == null) {

1085             return result;

1086         }

1087         boolean flag = false;

1088         try {

1089 

1090             result = shardedJedis.zrank(key, member);

1091 

1092         } catch (Exception e) {

1093             log.error(e.getMessage(), e);

1094             flag = true;

1095         } finally {

1096             redisService.returnResource(shardedJedis, flag);

1097         }

1098         return result;

1099     }

1100 

1101     public Long zrevrank(String key, String member) {

1102         Long result = null;

1103         ShardedJedis shardedJedis = redisService.getRedisClient();

1104         if (shardedJedis == null) {

1105             return result;

1106         }

1107         boolean flag = false;

1108         try {

1109 

1110             result = shardedJedis.zrevrank(key, member);

1111 

1112         } catch (Exception e) {

1113             log.error(e.getMessage(), e);

1114             flag = true;

1115         } finally {

1116             redisService.returnResource(shardedJedis, flag);

1117         }

1118         return result;

1119     }

1120 

1121     public Set<String> zrevrange(String key, int start, int end) {

1122         Set<String> result = null;

1123         ShardedJedis shardedJedis = redisService.getRedisClient();

1124         if (shardedJedis == null) {

1125             return result;

1126         }

1127         boolean flag = false;

1128         try {

1129 

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

1131 

1132         } catch (Exception e) {

1133             log.error(e.getMessage(), e);

1134             flag = true;

1135         } finally {

1136             redisService.returnResource(shardedJedis, flag);

1137         }

1138         return result;

1139     }

1140 

1141     public Set<Tuple> zrangeWithScores(String key, int start, int end) {

1142         Set<Tuple> result = null;

1143         ShardedJedis shardedJedis = redisService.getRedisClient();

1144         if (shardedJedis == null) {

1145             return result;

1146         }

1147         boolean flag = false;

1148         try {

1149 

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

1151 

1152         } catch (Exception e) {

1153             log.error(e.getMessage(), e);

1154             flag = true;

1155         } finally {

1156             redisService.returnResource(shardedJedis, flag);

1157         }

1158         return result;

1159     }

1160 

1161     public Set<Tuple> zrevrangeWithScores(String key, int start, int end) {

1162         Set<Tuple> result = null;

1163         ShardedJedis shardedJedis = redisService.getRedisClient();

1164         if (shardedJedis == null) {

1165             return result;

1166         }

1167         boolean flag = false;

1168         try {

1169 

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

1171 

1172         } catch (Exception e) {

1173             log.error(e.getMessage(), e);

1174             flag = true;

1175         } finally {

1176             redisService.returnResource(shardedJedis, flag);

1177         }

1178         return result;

1179     }

1180 

1181     public Long zcard(String key) {

1182         Long result = null;

1183         ShardedJedis shardedJedis = redisService.getRedisClient();

1184         if (shardedJedis == null) {

1185             return result;

1186         }

1187         boolean flag = false;

1188         try {

1189 

1190             result = shardedJedis.zcard(key);

1191 

1192         } catch (Exception e) {

1193             log.error(e.getMessage(), e);

1194             flag = true;

1195         } finally {

1196             redisService.returnResource(shardedJedis, flag);

1197         }

1198         return result;

1199     }

1200 

1201     public Double zscore(String key, String member) {

1202         Double result = null;

1203         ShardedJedis shardedJedis = redisService.getRedisClient();

1204         if (shardedJedis == null) {

1205             return result;

1206         }

1207         boolean flag = false;

1208         try {

1209 

1210             result = shardedJedis.zscore(key, member);

1211 

1212         } catch (Exception e) {

1213             log.error(e.getMessage(), e);

1214             flag = true;

1215         } finally {

1216             redisService.returnResource(shardedJedis, flag);

1217         }

1218         return result;

1219     }

1220 

1221     public List<String> sort(String key) {

1222         List<String> result = null;

1223         ShardedJedis shardedJedis = redisService.getRedisClient();

1224         if (shardedJedis == null) {

1225             return result;

1226         }

1227         boolean flag = false;

1228         try {

1229 

1230             result = shardedJedis.sort(key);

1231 

1232         } catch (Exception e) {

1233             log.error(e.getMessage(), e);

1234             flag = true;

1235         } finally {

1236             redisService.returnResource(shardedJedis, flag);

1237         }

1238         return result;

1239     }

1240 

1241     public List<String> sort(String key, SortingParams sortingParameters) {

1242         List<String> result = null;

1243         ShardedJedis shardedJedis = redisService.getRedisClient();

1244         if (shardedJedis == null) {

1245             return result;

1246         }

1247         boolean flag = false;

1248         try {

1249 

1250             result = shardedJedis.sort(key, sortingParameters);

1251 

1252         } catch (Exception e) {

1253             log.error(e.getMessage(), e);

1254             flag = true;

1255         } finally {

1256             redisService.returnResource(shardedJedis, flag);

1257         }

1258         return result;

1259     }

1260 

1261     public Long zcount(String key, double min, double max) {

1262         Long result = null;

1263         ShardedJedis shardedJedis = redisService.getRedisClient();

1264         if (shardedJedis == null) {

1265             return result;

1266         }

1267         boolean flag = false;

1268         try {

1269 

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

1271 

1272         } catch (Exception e) {

1273             log.error(e.getMessage(), e);

1274             flag = true;

1275         } finally {

1276             redisService.returnResource(shardedJedis, flag);

1277         }

1278         return result;

1279     }

1280 

1281     public Set<String> zrangeByScore(String key, double min, double max) {

1282         Set<String> result = null;

1283         ShardedJedis shardedJedis = redisService.getRedisClient();

1284         if (shardedJedis == null) {

1285             return result;

1286         }

1287         boolean flag = false;

1288         try {

1289 

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

1291 

1292         } catch (Exception e) {

1293             log.error(e.getMessage(), e);

1294             flag = true;

1295         } finally {

1296             redisService.returnResource(shardedJedis, flag);

1297         }

1298         return result;

1299     }

1300 

1301     public Set<String> zrevrangeByScore(String key, double max, double min) {

1302         Set<String> result = null;

1303         ShardedJedis shardedJedis = redisService.getRedisClient();

1304         if (shardedJedis == null) {

1305             return result;

1306         }

1307         boolean flag = false;

1308         try {

1309 

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

1311 

1312         } catch (Exception e) {

1313             log.error(e.getMessage(), e);

1314             flag = true;

1315         } finally {

1316             redisService.returnResource(shardedJedis, flag);

1317         }

1318         return result;

1319     }

1320 

1321     public Set<String> zrangeByScore(String key, double min, double max,

1322             int offset, int count) {

1323         Set<String> result = null;

1324         ShardedJedis shardedJedis = redisService.getRedisClient();

1325         if (shardedJedis == null) {

1326             return result;

1327         }

1328         boolean flag = false;

1329         try {

1330 

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

1332 

1333         } catch (Exception e) {

1334             log.error(e.getMessage(), e);

1335             flag = true;

1336         } finally {

1337             redisService.returnResource(shardedJedis, flag);

1338         }

1339         return result;

1340     }

1341 

1342     public Set<String> zrevrangeByScore(String key, double max, double min,

1343             int offset, int count) {

1344         Set<String> result = null;

1345         ShardedJedis shardedJedis = redisService.getRedisClient();

1346         if (shardedJedis == null) {

1347             return result;

1348         }

1349         boolean flag = false;

1350         try {

1351 

1352             result = shardedJedis

1353                     .zrevrangeByScore(key, max, min, offset, count);

1354 

1355         } catch (Exception e) {

1356             log.error(e.getMessage(), e);

1357             flag = true;

1358         } finally {

1359             redisService.returnResource(shardedJedis, flag);

1360         }

1361         return result;

1362     }

1363 

1364     public Set<Tuple> zrangeByScoreWithScores(String key, double min, double max) {

1365         Set<Tuple> result = null;

1366         ShardedJedis shardedJedis = redisService.getRedisClient();

1367         if (shardedJedis == null) {

1368             return result;

1369         }

1370         boolean flag = false;

1371         try {

1372 

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

1374 

1375         } catch (Exception e) {

1376             log.error(e.getMessage(), e);

1377             flag = true;

1378         } finally {

1379             redisService.returnResource(shardedJedis, flag);

1380         }

1381         return result;

1382     }

1383 

1384     public Set<Tuple> zrevrangeByScoreWithScores(String key, double max,

1385             double min) {

1386         Set<Tuple> result = null;

1387         ShardedJedis shardedJedis = redisService.getRedisClient();

1388         if (shardedJedis == null) {

1389             return result;

1390         }

1391         boolean flag = false;

1392         try {

1393 

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

1395 

1396         } catch (Exception e) {

1397             log.error(e.getMessage(), e);

1398             flag = true;

1399         } finally {

1400             redisService.returnResource(shardedJedis, flag);

1401         }

1402         return result;

1403     }

1404 

1405     public Set<Tuple> zrangeByScoreWithScores(String key, double min,

1406             double max, int offset, int count) {

1407         Set<Tuple> result = null;

1408         ShardedJedis shardedJedis = redisService.getRedisClient();

1409         if (shardedJedis == null) {

1410             return result;

1411         }

1412         boolean flag = false;

1413         try {

1414 

1415             result = shardedJedis.zrangeByScoreWithScores(key, min, max,

1416                     offset, count);

1417 

1418         } catch (Exception e) {

1419             log.error(e.getMessage(), e);

1420             flag = true;

1421         } finally {

1422             redisService.returnResource(shardedJedis, flag);

1423         }

1424         return result;

1425     }

1426 

1427     public Set<Tuple> zrevrangeByScoreWithScores(String key, double max,

1428             double min, int offset, int count) {

1429         Set<Tuple> result = null;

1430         ShardedJedis shardedJedis = redisService.getRedisClient();

1431         if (shardedJedis == null) {

1432             return result;

1433         }

1434         boolean flag = false;

1435         try {

1436 

1437             result = shardedJedis.zrevrangeByScoreWithScores(key, max, min,

1438                     offset, count);

1439 

1440         } catch (Exception e) {

1441             log.error(e.getMessage(), e);

1442             flag = true;

1443         } finally {

1444             redisService.returnResource(shardedJedis, flag);

1445         }

1446         return result;

1447     }

1448 

1449     public Long zremrangeByRank(String key, int start, int end) {

1450         Long result = null;

1451         ShardedJedis shardedJedis = redisService.getRedisClient();

1452         if (shardedJedis == null) {

1453             return result;

1454         }

1455         boolean flag = false;

1456         try {

1457 

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

1459 

1460         } catch (Exception e) {

1461             log.error(e.getMessage(), e);

1462             flag = true;

1463         } finally {

1464             redisService.returnResource(shardedJedis, flag);

1465         }

1466         return result;

1467     }

1468 

1469     public Long zremrangeByScore(String key, double start, double end) {

1470         Long result = null;

1471         ShardedJedis shardedJedis = redisService.getRedisClient();

1472         if (shardedJedis == null) {

1473             return result;

1474         }

1475         boolean flag = false;

1476         try {

1477 

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

1479 

1480         } catch (Exception e) {

1481             log.error(e.getMessage(), e);

1482             flag = true;

1483         } finally {

1484             redisService.returnResource(shardedJedis, flag);

1485         }

1486         return result;

1487     }

1488 

1489     public Long linsert(String key, LIST_POSITION where, String pivot,

1490             String value) {

1491         Long result = null;

1492         ShardedJedis shardedJedis = redisService.getRedisClient();

1493         if (shardedJedis == null) {

1494             return result;

1495         }

1496         boolean flag = false;

1497         try {

1498 

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

1500 

1501         } catch (Exception e) {

1502             log.error(e.getMessage(), e);

1503             flag = true;

1504         } finally {

1505             redisService.returnResource(shardedJedis, flag);

1506         }

1507         return result;

1508     }

1509 

1510     

1511     @SuppressWarnings("deprecation")

1512     public List<Object> pipelined(ShardedJedisPipeline shardedJedisPipeline) {

1513         ShardedJedis shardedJedis = redisService.getRedisClient();

1514         List<Object> result = null;

1515         if (shardedJedis == null) {

1516             return result;

1517         }

1518         boolean flag = false;

1519         try {

1520             result = shardedJedis.pipelined(shardedJedisPipeline);

1521         } catch (Exception e) {

1522             log.error(e.getMessage(), e);

1523             flag = true;

1524         } finally {

1525             redisService.returnResource(shardedJedis, flag);

1526         }

1527         return result;

1528     }

1529 

1530     public Jedis getShard(String key) {

1531         ShardedJedis shardedJedis = redisService.getRedisClient();

1532         Jedis result = null;

1533         if (shardedJedis == null) {

1534             return result;

1535         }

1536         boolean flag = false;

1537         try {

1538             result = shardedJedis.getShard(key);

1539         } catch (Exception e) {

1540             log.error(e.getMessage(), e);

1541             flag = true;

1542         } finally {

1543             redisService.returnResource(shardedJedis, flag);

1544         }

1545         return result;

1546     }

1547 

1548     public JedisShardInfo getShardInfo(String key) {

1549         ShardedJedis shardedJedis = redisService.getRedisClient();

1550         JedisShardInfo result = null;

1551         if (shardedJedis == null) {

1552             return result;

1553         }

1554         boolean flag = false;

1555         try {

1556             result = shardedJedis.getShardInfo(key);

1557         } catch (Exception e) {

1558             log.error(e.getMessage(), e);

1559             flag = true;

1560         } finally {

1561             redisService.returnResource(shardedJedis, flag);

1562         }

1563         return result;

1564     }

1565 

1566     public String getKeyTag(String key) {

1567         ShardedJedis shardedJedis = redisService.getRedisClient();

1568         String result = null;

1569         if (shardedJedis == null) {

1570             return result;

1571         }

1572         boolean flag = false;

1573         try {

1574             result = shardedJedis.getKeyTag(key);

1575         } catch (Exception e) {

1576             log.error(e.getMessage(), e);

1577             flag = true;

1578         } finally {

1579             redisService.returnResource(shardedJedis, flag);

1580         }

1581         return result;

1582     }

1583 

1584     public Collection<JedisShardInfo> getAllShardInfo() {

1585         ShardedJedis shardedJedis = redisService.getRedisClient();

1586         Collection<JedisShardInfo> result = null;

1587         if (shardedJedis == null) {

1588             return result;

1589         }

1590         boolean flag = false;

1591         try {

1592             result = shardedJedis.getAllShardInfo();

1593 

1594         } catch (Exception e) {

1595             log.error(e.getMessage(), e);

1596             flag = true;

1597         } finally {

1598             redisService.returnResource(shardedJedis, flag);

1599         }

1600         return result;

1601     }

1602 

1603     public Collection<Jedis> getAllShards() {

1604         ShardedJedis shardedJedis = redisService.getRedisClient();

1605         Collection<Jedis> result = null;

1606         if (shardedJedis == null) {

1607             return result;

1608         }

1609         boolean flag = false;

1610         try {

1611             result = shardedJedis.getAllShards();

1612 

1613         } catch (Exception e) {

1614             log.error(e.getMessage(), e);

1615             flag = true;

1616         } finally {

1617             redisService.returnResource(shardedJedis, flag);

1618         }

1619         return result;

1620     }

1621 

1622 }
View Code

  使用的时候,直接调用此类中对应的方法即可。

  Redis的内部实现是C写的,有必要好好看看里面究竟是怎么实现的。

6 参考

(1)Redis和MongoDB比较:

http://taotao1240.blog.51cto.com/731446/755173

(2)Redis官方下载地址:

http://redis.cn/download.html

(3) 按键通知事件

http://redis.mjplay.com.cn/topic/notification.html

(4)Redis内部实现

http://www.redisbook.com/en/latest/

(5)Redis持久化

http://blog.nosqlfan.com/html/3813.html

(6)Redis的AOF详细解读

http://www.wzxue.com/redis%E6%A0%B8%E5%BF%83%E8%A7%A3%E8%AF%BB-aof%E4%B8%8Erewrite%E6%9C%BA%E5%88%B6/

(7)Redis失效机制解析

http://blog.nosqlfan.com/html/4218.html

(8)Redis命令列表

http://redis.cn/commands.html

(9)Redis应用场景

http://www.coderli.com/redis-application-scenarios

(10)Jedis下载地址:

https://github.com/xetorthio/jedis

 

-------------------------------------------------------------------------------

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客

你可能感兴趣的:(redis)