Jedis的简单使用

来源:互联网 发布:淘宝客怎样才能赚钱 编辑:程序博客网 时间:2024/05/20 13:09

Redis 是一款开源的,遵守BSD协议的高性能key-value 数据库.

有以下特点:
1,支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2,不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash 等数据结构的存储
3,支持数据的备份,及master-slave 模式的数据备份

优势:
1,性能极高,读速度110000次/s,写速度81000次/s
2, 丰富的数据类型支持二进制案例的String,lists,hashes,Sets及OrderedSets 数据类型操作
3,原子Redis 的所有操作都是原子性,同时还支持对几个操作全并后的原子性执行
4,丰富的特性,Redis 还支持pushlish/subscribe。通知,key过期等特性

Jedis 是Redis 官方首选的Java客户端开发包。

下面是jedis的一些使用

列表内容

首先需要在Maven中添加依赖

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

初始化Redis 连接池

 JedisPoolConfig config = new JedisPoolConfig();            config.setMaxIdle(redisMaxIdle);//最大空闲连接数, 应用自己评估,不要超过ApsaraDB for Redis每个实例最大的连接数            config.setMaxTotal(redisMaxTotal);//最大连接数, 应用自己评估,不要超过ApsaraDB for Redis每个实例最大的连接数            config.setTestOnBorrow(false);            config.setTestOnReturn(false);            if ("".equals(redisPassword)) {                this.jedisPool = new JedisPool(config, redisServer, 6379, 3000);                //参数:config,host,port,timeout            } else {                this.jedisPool = new JedisPool(config, redisServer, 6379, 3000, redisPassword);                //参数:config,host,port,timeout,password            }//此段代码需要进行异常处理

获取jedis 实例

jedisPool.getResource()

一般在进行redis 操作时需要按照以下模式,以便及时释放资源

        try {              //....            } catch (Exception ex) {                //...            } finally {                if (jedis != null) {                    jedis.close();                }            }

也可以和Spring 结合使用,applicationContext.xml 配置如下

<beans xmlns="http://www.springframework.org/schema/beans"        xmlns:context="http://www.springframework.org/schema/context"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">        <!-- 加载redis配置文件 -->        <context:property-placeholder location="classpath:redis.properties"/>        <!-- redis连接池的配置 -->        <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">            <property name="maxActive" value="${redis.pool.maxActive}"/>            <property name="maxIdle" value="${redis.pool.maxIdle}"/>            <property name="minIdle" value="${redis.pool.minIdle}"/>            <property name="maxWait" value="${redis.pool.maxWait}"/>            <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/>            <property name="testOnReturn" value="${redis.pool.testOnReturn}"/>        </bean>        <!-- redis的连接池pool,不是必选项:timeout/password  -->        <bean id = "jedisPool" class="redis.clients.jedis.JedisPool">            <constructor-arg index="0" ref="jedisPoolConfig"/>            <constructor-arg index="1" value="${redis.host}"/>            <constructor-arg index="2" value="${redis.port}" type="int"/>            <constructor-arg index="3" value="${redis.timeout}" type="int"/>            <constructor-arg index="4" value="${redis.password}"/>        </bean>    </beans>  

从Spring 容器中获取JedisPool

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  JedisPool pool = (JedisPool) context.getBean("jedisPool");  Jedis jedis = pool.getResource();   //...  pool.returnResource(jedis);  

一些常用的方法:
参考:http://blog.csdn.net/u013256816/article/details/51125842

 @Test    public void test() {        Jedis jedis = null;        try {            jedis = MyConfig.config.getJedisPool().getResource();            //键相关操作            System.out.println("清空数据:" + jedis.flushDB());            System.out.println("判断某个键是否存在:" + jedis.exists("username"));            System.out.println("新增<'username','zzh'>的键值对:" + jedis.set("username", "nzs"));            System.out.println(jedis.exists("name"));            System.out.println("新增<'password','password'>的键值对:" + jedis.set("password", "password"));            System.out.print("系统中所有的键如下:");            Set<String> keys = jedis.keys("*");            System.out.println(keys);            System.out.println("删除键password:" + jedis.del("password"));            System.out.println("判断键password是否存在:" + jedis.exists("password"));            System.out.println("设置键username的过期时间为5s:" + jedis.expire("username", 5));            TimeUnit.SECONDS.sleep(2);            System.out.println("查看键username的剩余生存时间:" + jedis.ttl("username"));            System.out.println("移除键username的生存时间:" + jedis.persist("username"));            System.out.println("查看键username的剩余生存时间:" + jedis.ttl("username"));            System.out.println("查看键username所存储的值的类型:" + jedis.type("username"));            System.out.println("重新设置username(类似set,包含过期时间):" + jedis.setex("username", 10, "nzs"));            System.out.println("重新设置username,如果已有,则失败:" + jedis.setnx("username", "nzs"));            /*             清空数据:OK            判断某个键是否存在:false            新增<'username','zzh'>的键值对:OK                false            新增<'password','password'>的键值对:OK            系统中所有的键如下:[password, username]            删除键password:1            判断键password是否存在:false            设置键username的过期时间为5s:1            查看键username的剩余生存时间:3            移除键username的生存时间:1            查看键username的剩余生存时间:-1            查看键username所存储的值的类型:string            重新设置username(类似set,包含过期时间):OK            重新设置username,如果已有,则失败:0             */            //列表相关            jedis.flushDB();            System.out.println("===========添加一个list===========");            jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap", "WeakHashMap", "LinkedHashMap");            jedis.lpush("collections", "HashSet");            jedis.lpush("collections", "TreeSet");            jedis.lpush("collections", "TreeMap");            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));//-1代表倒数第一个元素,-2代表倒数第二个元素            System.out.println("collections区间0-3的元素:" + jedis.lrange("collections", 0, 3));            System.out.println("===============================");            // 删除列表指定的值 ,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈            System.out.println("删除指定元素个数:" + jedis.lrem("collections", 2, "HashMap"));            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));            System.out.println("删除下表0-3区间之外的元素:" + jedis.ltrim("collections", 0, 3));            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));            System.out.println("collections列表出栈(左端):" + jedis.lpop("collections"));            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));            System.out.println("collections添加元素,从列表右端,与lpush相对应:" + jedis.rpush("collections", "EnumMap"));            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));            System.out.println("collections列表出栈(右端):" + jedis.rpop("collections"));            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));            System.out.println("修改collections指定下标1的内容:" + jedis.lset("collections", 1, "LinkedArrayList"));            System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));            System.out.println("===============================");            System.out.println("collections的长度:" + jedis.llen("collections"));            System.out.println("获取collections下标为2的元素:" + jedis.lindex("collections", 2));            System.out.println("===============================");            jedis.lpush("sortedList", "3", "6", "2", "0", "7", "4");            System.out.println("sortedList排序前:" + jedis.lrange("sortedList", 0, -1));            System.out.println(jedis.sort("sortedList"));            //排序是取出数据时排序,用lrange 取到的仍是原来的数据            System.out.println("sortedList排序后:" + jedis.lrange("sortedList", 0, -1));            /*            ===========添加一个list===========                collections的内容:[TreeMap, TreeSet, HashSet, LinkedHashMap, WeakHashMap, HashMap, Stack, Vector, ArrayList]                collections区间0-3的元素:[TreeMap, TreeSet, HashSet, LinkedHashMap]                ===============================                删除指定元素个数:1                collections的内容:[TreeMap, TreeSet, HashSet, LinkedHashMap, WeakHashMap, Stack, Vector, ArrayList]                删除下表0-3区间之外的元素:OK                collections的内容:[TreeMap, TreeSet, HashSet, LinkedHashMap]                collections列表出栈(左端):TreeMap                collections的内容:[TreeSet, HashSet, LinkedHashMap]                collections添加元素,从列表右端,与lpush相对应:4                collections的内容:[TreeSet, HashSet, LinkedHashMap, EnumMap]                collections列表出栈(右端):EnumMap                collections的内容:[TreeSet, HashSet, LinkedHashMap]                修改collections指定下标1的内容:OK                collections的内容:[TreeSet, LinkedArrayList, LinkedHashMap]                ===============================                collections的长度:3                获取collections下标为2的元素:LinkedHashMap                ===============================                sortedList排序前:[4, 7, 0, 2, 6, 3]                [0, 2, 3, 4, 6, 7]                sortedList排序后:[4, 7, 0, 2, 6, 3]             */            //字符串操作            jedis.flushDB();            System.out.println("===========增加数据===========");            System.out.println(jedis.set("key1", "value1"));            System.out.println(jedis.set("key2", "value2"));            System.out.println(jedis.set("key3", "value3"));            System.out.println("删除键key2:" + jedis.del("key2"));            System.out.println("获取键key2:" + jedis.get("key2"));            System.out.println("修改key1:" + jedis.set("key1", "value1Changed"));            System.out.println("获取key1的值:" + jedis.get("key1"));            System.out.println("在key3后面加入值:" + jedis.append("key3", "End"));            System.out.println("key3的值:" + jedis.get("key3"));            System.out.println("增加多个键值对:" + jedis.mset("key01", "value01", "key02", "value02", "key03", "value03"));            System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));            System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03", "key04"));            System.out.println("删除多个键值对:" + jedis.del(new String[]{"key01", "key02"}));            System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));            jedis.flushDB();            System.out.println("===========新增键值对防止覆盖原先值==============");            System.out.println(jedis.setnx("key1", "value1"));            System.out.println(jedis.setnx("key2", "value2"));            System.out.println(jedis.setnx("key2", "value2-new"));            System.out.println(jedis.get("key1"));            System.out.println(jedis.get("key2"));            System.out.println("===========新增键值对并设置有效时间=============");            System.out.println(jedis.setex("key3", 2, "value3"));            System.out.println(jedis.get("key3"));            TimeUnit.SECONDS.sleep(3);            System.out.println(jedis.get("key3"));            System.out.println("===========获取原值,更新为新值==========");//GETSET is an atomic set this value and return the old value command.            System.out.println(jedis.getSet("key2", "key2GetSet"));            System.out.println(jedis.get("key2"));            System.out.println("获得key2的值的字串:" + jedis.getrange("key2", 2, 4));            /*            ===========增加数据===========                OK                OK                OK                删除键key2:1                获取键key2:null                修改key1:OK                获取key1的值:value1Changed                在key3后面加入值:9                key3的值:value3End                增加多个键值对:OK                获取多个键值对:[value01, value02, value03]                获取多个键值对:[value01, value02, value03, null]                删除多个键值对:2                获取多个键值对:[null, null, value03]                ===========新增键值对防止覆盖原先值==============                1                1                0                value1                value2                ===========新增键值对并设置有效时间=============                OK                value3                null                ===========获取原值,更新为新值==========                value2                key2GetSet                获得key2的值的字串:y2G             */            //整数浮点数            jedis.flushDB();            jedis.set("key1", "1");            jedis.set("key2", "2");            jedis.set("key3", "2.3");            System.out.println("key1的值:"+jedis.get("key1"));            System.out.println("key2的值:"+jedis.get("key2"));            System.out.println("key1的值加1:"+jedis.incr("key1"));            System.out.println("获取key1的值:"+jedis.get("key1"));            System.out.println("key2的值减1:"+jedis.decr("key2"));            System.out.println("获取key2的值:"+jedis.get("key2"));            System.out.println("将key1的值加上整数5:"+jedis.incrBy("key1", 5));            System.out.println("获取key1的值:"+jedis.get("key1"));            System.out.println("将key2的值减去整数5:"+jedis.decrBy("key2", 5));            System.out.println("获取key2的值:"+jedis.get("key2"));            System.out.println("key3加2.5:"+jedis.incrByFloat("key3",2.5));            System.out.println("获取key3的值:"+jedis.get("key3"));            System.out.println("key3加2.5:"+jedis.incrByFloat("key3",2.5));            System.out.println("获取key3的值:"+jedis.get("key3"));            /*            key1的值:1                key2的值:2                key1的值加1:2                获取key1的值:2                key2的值减1:1                获取key2的值:1                将key1的值加上整数5:7                获取key1的值:7                将key2的值减去整数5:-4                获取key2的值:-4                key3加2.5:4.8                获取key3的值:4.8                key3加2.5:7.3                获取key3的值:7.3             */            //集合            jedis.flushDB();            System.out.println("============向集合中添加元素============");            System.out.println(jedis.sadd("eleSet", "e1", "e2", "e4", "e3", "e0", "e8", "e7", "e5"));            System.out.println(jedis.sadd("eleSet", "e6"));            System.out.println(jedis.sadd("eleSet", "e6"));            System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet"));            System.out.println("删除一个元素e0:" + jedis.srem("eleSet", "e0"));            System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet"));            System.out.println("删除两个元素e7和e6:" + jedis.srem("eleSet", "e7", "e6"));            System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet"));            System.out.println("随机的移除集合中的一个元素:" + jedis.spop("eleSet"));            System.out.println("随机的移除集合中的一个元素:" + jedis.spop("eleSet"));            System.out.println("eleSet的所有元素为:" + jedis.smembers("eleSet"));            System.out.println("eleSet中包含元素的个数:" + jedis.scard("eleSet"));            System.out.println("e3是否在eleSet中:" + jedis.sismember("eleSet", "e3"));            System.out.println("e1是否在eleSet中:" + jedis.sismember("eleSet", "e1"));            System.out.println("e1是否在eleSet中:" + jedis.sismember("eleSet", "e5"));            System.out.println("=================================");            System.out.println(jedis.sadd("eleSet1", "e1", "e2", "e4", "e3", "e0", "e8", "e7", "e5"));            System.out.println(jedis.sadd("eleSet2", "e1", "e2", "e4", "e3", "e0", "e8"));            System.out.println("将eleSet1中删除e1并存入eleSet3中:" + jedis.smove("eleSet1", "eleSet3", "e1"));            System.out.println("将eleSet1中删除e2并存入eleSet3中:" + jedis.smove("eleSet1", "eleSet3", "e2"));            System.out.println("eleSet1中的元素:" + jedis.smembers("eleSet1"));            System.out.println("eleSet3中的元素:" + jedis.smembers("eleSet3"));            System.out.println("============集合运算=================");            System.out.println("eleSet1中的元素:" + jedis.smembers("eleSet1"));            System.out.println("eleSet2中的元素:" + jedis.smembers("eleSet2"));            System.out.println("eleSet1和eleSet2的交集:" + jedis.sinter("eleSet1", "eleSet2"));            System.out.println("eleSet1和eleSet2的并集:" + jedis.sunion("eleSet1", "eleSet2"));            //eleSet1中有,eleSet2中没有            System.out.println("eleSet1和eleSet2的差集:" + jedis.sdiff("eleSet1", "eleSet2"));            /*            ============向集合中添加元素============            8            1            0            eleSet的所有元素为:[e2, e8, e5, e7, e4, e3, e1, e6, e0]            删除一个元素e0:1            eleSet的所有元素为:[e8, e5, e7, e4, e3, e1, e6, e2]            删除两个元素e7和e6:2            eleSet的所有元素为:[e4, e3, e1, e8, e2, e5]            随机的移除集合中的一个元素:e4            随机的移除集合中的一个元素:e2            eleSet的所有元素为:[e1, e8, e5, e3]            eleSet中包含元素的个数:4            e3是否在eleSet中:true            e1是否在eleSet中:true            e1是否在eleSet中:true            =================================            8            6            将eleSet1中删除e1并存入eleSet3中:1            将eleSet1中删除e2并存入eleSet3中:1            eleSet1中的元素:[e0, e8, e5, e7, e4, e3]            eleSet3中的元素:[e1, e2]            ============集合运算=================            eleSet1中的元素:[e0, e8, e5, e7, e4, e3]            eleSet2中的元素:[e2, e4, e3, e1, e0, e8]            eleSet1和eleSet2的交集:[e0, e8, e4, e3]            eleSet1和eleSet2的并集:[e8, e5, e7, e4, e3, e1, e0, e2]            eleSet1和eleSet2的差集:[e5, e7]             */            //hash            jedis.flushDB();            Map<String,String> map = new HashMap<>();            map.put("key1","value1");            map.put("key2","value2");            map.put("key3","value3");            map.put("key4","value4");            jedis.hmset("hash",map);            jedis.hset("hash", "key5", "value5");            System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));//return Map<String,String>            System.out.println("散列hash的所有键为:"+jedis.hkeys("hash"));//return Set<String>            System.out.println("散列hash的所有值为:"+jedis.hvals("hash"));//return List<String>            System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 6));            System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));            System.out.println("将key6保存的值加上一个整数,如果key6不存在则添加key6:"+jedis.hincrBy("hash", "key6", 3));            System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));            System.out.println("删除一个或者多个键值对:"+jedis.hdel("hash", "key2"));            System.out.println("散列hash的所有键值对为:"+jedis.hgetAll("hash"));            System.out.println("散列hash中键值对的个数:"+jedis.hlen("hash"));            System.out.println("判断hash中是否存在key2:"+jedis.hexists("hash","key2"));            System.out.println("判断hash中是否存在key3:"+jedis.hexists("hash","key3"));            System.out.println("获取hash中的值:"+jedis.hmget("hash","key3"));            System.out.println("获取hash中的值:"+jedis.hmget("hash","key3","key4"));            /*            散列hash的所有键值对为:{key1=value1, key2=value2, key5=value5, key3=value3, key4=value4}            散列hash的所有键为:[key1, key2, key5, key3, key4]            散列hash的所有值为:[value2, value3, value1, value4, value5]            将key6保存的值加上一个整数,如果key6不存在则添加key6:6            散列hash的所有键值对为:{key1=value1, key2=value2, key5=value5, key6=6, key3=value3, key4=value4}            将key6保存的值加上一个整数,如果key6不存在则添加key6:9            散列hash的所有键值对为:{key1=value1, key2=value2, key5=value5, key6=9, key3=value3, key4=value4}            删除一个或者多个键值对:1            散列hash的所有键值对为:{key1=value1, key5=value5, key6=9, key3=value3, key4=value4}            散列hash中键值对的个数:5            判断hash中是否存在key2:false            判断hash中是否存在key3:true            获取hash中的值:[value3]            获取hash中的值:[value3, value4]             */            //有序集合            jedis.flushDB();            Map<String, Double> map1 = new HashMap<>();            map1.put("key2", 1.2);            map1.put("key3", 4.0);            map1.put("key4", 5.0);            map1.put("key5", 0.2);            System.out.println(jedis.zadd("zset", 3, "key1"));            System.out.println(jedis.zadd("zset", map1));            System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));            System.out.println("zset中的所有元素:" + jedis.zrangeWithScores("zset", 0, -1));            System.out.println("zset中的所有元素:" + jedis.zrangeByScore("zset", 0, 100));            System.out.println("zset中的所有元素:" + jedis.zrangeByScoreWithScores("zset", 0, 100));            System.out.println("zset中key2的分值:" + jedis.zscore("zset", "key2"));            System.out.println("zset中key2的排名:" + jedis.zrank("zset", "key2"));            System.out.println("删除zset中的元素key3:" + jedis.zrem("zset", "key3"));            System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));            System.out.println("zset中元素的个数:" + jedis.zcard("zset"));            System.out.println("zset中分值在1-4之间的元素的个数:" + jedis.zcount("zset", 1, 4));            System.out.println("key2的分值加上5:" + jedis.zincrby("zset", 5, "key2"));            System.out.println("key3的分值加上4:" + jedis.zincrby("zset", 4, "key3"));            System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));            /*            1            4            zset中的所有元素:[key5, key2, key1, key3, key4]            zset中的所有元素:[[[107, 101, 121, 53],0.2], [[107, 101, 121, 50],1.2], [[107, 101, 121, 49],3.0], [[107, 101, 121, 51],4.0], [[107, 101, 121, 52],5.0]]            zset中的所有元素:[key5, key2, key1, key3, key4]            zset中的所有元素:[[[107, 101, 121, 53],0.2], [[107, 101, 121, 50],1.2], [[107, 101, 121, 49],3.0], [[107, 101, 121, 51],4.0], [[107, 101, 121, 52],5.0]]            zset中key2的分值:1.2            zset中key2的排名:1            删除zset中的元素key3:1            zset中的所有元素:[key5, key2, key1, key4]            zset中元素的个数:4            zset中分值在1-4之间的元素的个数:2            key2的分值加上5:6.2            key3的分值加上4:4.0            zset中的所有元素:[key5, key1, key3, key4, key2]             */            //排序            jedis.flushDB();            jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap", "WeakHashMap", "LinkedHashMap");            System.out.println("collections的内容:"+jedis.lrange("collections", 0, -1));            SortingParams sortingParameters = new SortingParams();            System.out.println(jedis.sort("collections",sortingParameters.alpha()));            System.out.println("===============================");            jedis.lpush("sortedList", "3","6","2","0","7","4");            System.out.println("sortedList排序前:"+jedis.lrange("sortedList", 0, -1));            System.out.println("升序:"+jedis.sort("sortedList", sortingParameters.asc()));            System.out.println("升序:"+jedis.sort("sortedList", sortingParameters.desc()));            System.out.println("===============================");            jedis.lpush("userlist", "33");            jedis.lpush("userlist", "22");            jedis.lpush("userlist", "55");            jedis.lpush("userlist", "11");            jedis.hset("user:66", "name", "66");            jedis.hset("user:55", "name", "55");            jedis.hset("user:33", "name", "33");            jedis.hset("user:22", "name", "79");            jedis.hset("user:11", "name", "24");            jedis.hset("user:11", "add", "beijing");            jedis.hset("user:22", "add", "shanghai");            jedis.hset("user:33", "add", "guangzhou");            jedis.hset("user:55", "add", "chongqing");            jedis.hset("user:66", "add", "xi'an");            sortingParameters = new SortingParams();            sortingParameters.get("user:*->name");            sortingParameters.get("user:*->add");            System.out.println(jedis.sort("userlist",sortingParameters));            System.out.println(jedis.lrange("userlist",0,-1));            /*             collections的内容:[LinkedHashMap, WeakHashMap, HashMap, Stack, Vector, ArrayList]            [ArrayList, HashMap, LinkedHashMap, Stack, Vector, WeakHashMap]            ===============================            sortedList排序前:[4, 7, 0, 2, 6, 3]            升序:[0, 2, 3, 4, 6, 7]            升序:[7, 6, 4, 3, 2, 0]            ===============================            [24, beijing, 79, shanghai, 33, guangzhou, 55, chongqing]            [11, 55, 22, 33]             */        } catch (Exception ex) {            ex.printStackTrace();        } finally {            if (jedis != null) {                jedis.close();            }        }    }