20190928-02使用Redis客户端Jedis连接Redis,以及用Java代码操作Redis 000 030
启动redis
1 package com.yujie.jedis; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Set; 6 7 import redis.clients.jedis.BinaryClient.LIST_POSITION; 8 import redis.clients.jedis.Jedis; 9 import redis.clients.jedis.Tuple; 10 11 public class TestJedis { 12 public static void main(String[] args) { 13 /*创建Jedis对象*/ 14 Jedis jedis = new Jedis("192.168.1.100",6379); 15 /*测试连接*/ 16 String ping = jedis.ping(); 17 /*输出ping结果、PONG表示连接成功*/ 18 System.out.println("输出ping结果、PONG表示连接成功:" + ping); 19 System.out.println(); 20 21 /**************************key-k520*************************/ 22 System.out.println("**************************key-k520*************************"); 23 /*查询当前库的所有键*/ 24 Set<String> keys = jedis.keys("*"); 25 /*遍历输出所有键*/ 26 System.out.println("遍历输出所有键:"); 27 for(String key : keys) { 28 System.out.print(key + ","); 29 } 30 System.out.println(); 31 /*判断某个键是否存在*/ 32 System.out.println("判断某个键是否存在。k520【key】--jedis.exists====>"+jedis.exists("k520")); 33 /*查看键的类型*/ 34 System.out.println("查看键的类型。k520【key】--jedis.type====>"+jedis.type("k520")); 35 /*删除某个键*/ 36 System.out.println("删除某个键,1表示删除成功,0表示删除失败。k520【key】--jedis.del====>"+jedis.del("k520")); 37 /*为键值设置过期时间,单位秒*/ 38 System.out.println("为键值设置过期时间,单位秒。k520-600【key-second】--jedis.expire====>"+jedis.expire("k520", 600)); 39 /*查看还有多少秒过期,-1表示永不过期,-2表示已过期*/ 40 System.out.println("查看还有多少秒过期,大于0的数表示剩余秒数,-1表示永不过期,-2表示已过期。k520【key】--jedis.ttl====>"+jedis.ttl("k520")); 41 /*查看当前数据库的key的数量*/ 42 System.out.println("查看当前数据库的key的数量--jedis.dbSize====>"+jedis.dbSize()); 43 /*清空当前库,注意慎重使用*/ 44 /*System.out.println("清空当前库--jedis.flushDB====>"+jedis.flushDB());*/ 45 /*通杀全部库,注意慎重使用*/ 46 /*System.out.println("通杀全部库--jedis.flushAll====>"+jedis.flushAll());*/ 47 48 /**************************String-k999-k520*************************/ 49 System.out.println("**************************String-k999-k520*************************"); 50 /*String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 51 String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 52 String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。*/ 53 /*查询对应键值*/ 54 System.out.println("查询对应键值。k999【key】--jedis.get====>"+jedis.get("k999")); 55 /*添加键值对*/ 56 System.out.println("添加键值对。k999-v999【key-value】--jedis.set====>"+jedis.set("k999", "v999")); 57 /*将给定的<value> 追加到原值的末尾*/ 58 System.out.println("将给定的<value> 追加到原值的末尾,输出添加后值的长度。 k999-1【key-value】--jedis.append====>"+jedis.append("k999", "1")); 59 /*获得值的长度*/ 60 System.out.println("获得值的长度。k999【key】--jedis.strlen====>"+jedis.strlen("k999")); 61 /*只有在 key 不存在时设置 key 的值*/ 62 System.out.println("只有在 key不存在时设置 key的值,不存在时设置后返回1,存在时不能设置返回0。k520-520【key-value】--jedis.setnx====>"+jedis.setnx("k520", "520")); 63 /*将 key中储存的数字值增1,只能对数字值操作,如果为空,新增值为1*/ 64 System.out.println("将 key中储存的数字值增1,只能对数字值操作,如果为空,新增值为1。k520【key】--jedis.incr====>"+jedis.incr("k520")); 65 /*将 key中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1*/ 66 System.out.println("将 key中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1。k520【key】--jedis.decr====>"+jedis.decr("k520")); 67 /*将 key中储存的数字值增加。自定义步长。*/ 68 System.out.println("将 key中储存的数字值增加。自定义步长。k520-100【key-num】--jedis.incrBy,显示增加后的值====>"+jedis.incrBy("k520", 100)); 69 /*将 key中储存的数字值减少。自定义步长。*/ 70 System.out.println("将 key中储存的数字值减少。自定义步长。k520-100【key-num】--jedis.decrBy,显示减少后的值====>"+jedis.decrBy("k520", 100)); 71 /*同时设置一个或多个 key-value对*/ 72 System.out.println("同时设置一个或多个key-value对。name-余杰,sex-男【key-value,key-value】--jedis.mset====>"+jedis.mset("name","余杰","sex","男")); 73 /*同时获取一个或多个 value*/ 74 System.out.println("查询对应键值。name, sex【key,key】--jedis.mget====>"+jedis.mget("name","sex")); 75 /*同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。*/ 76 System.out.println("同时设置一个或多个 key-value 对,当且仅当所有给定 key都不存在。" 77 + "省-福建,市-福州【key-value,key-value】。不存在时设置后返回1,存在时不能设置返回0--jedis.msetnx====>" 78 +jedis.msetnx("省","福建","市","福州")); 79 /*获得值的范围,类似java中的substring*/ 80 System.out.println("获得值的范围,类似java中的substring。从0开始计算。k520-0-1【键-开始(包括)-结尾(包括),key-0-1,表示获取前两位】--jedis.getrange====>"+jedis.getrange("k520", 0, 1)); 81 /*用 <value>覆写<key> 所储存的字符串值,从<起始位置>开始。*/ 82 System.out.println("用 <value>覆写<key> 所储存的字符串值,从<起始位置>开始。k520【从0开始计算,键-起始位置(包括)-值,key-0-99,表示替换前两位为99】--jedis.setrange====>"+jedis.setrange("k520", 0, "99")); 83 /*设置键值的同时,设置过期时间,单位秒。*/ 84 System.out.println("设置键值的同时,设置过期时间,单位秒。k520【key-60-888,表示设置key的值为888,且60秒后过期】--jedis.setex====>"+jedis.setex("k520", 60, "888")); 85 /*查看还有多少秒过期,-1表示永不过期,-2表示已过期*/ 86 System.out.println("查看还有多少秒过期,大于0的数表示剩余秒数,-1表示永不过期,-2表示已过期k520【key】--jedis.ttl====>"+jedis.ttl("k520")); 87 /*以新换旧,设置了新值同时获得旧值。*/ 88 System.out.println("以新换旧,设置了新值同时获得旧值。k520【key-001,表示设置key的新值为001,且获取原来的值】--jedis.getSet====>"+jedis.getSet("k520", "001")); 89 System.out.println(); 90 91 /**************************List-k2000-k3000*************************/ 92 System.out.println("**************************List-k2000-k3000*************************"); 93 /*单键多值 94 Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。 95 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。*/ 96 /*从左边插入一个或多个值。*/ 97 System.out.println("从左边插入一个或多个值。返回插入后的值数量k2000【key-value-value-...】--jedis.lpush====>"+jedis.lpush("k2000","v1","v2")); 98 /*按照索引下标获得元素(从左到右)*/ 99 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 100 /*从右边插入一个或多个值。*/ 101 System.out.println("从右边插入一个或多个值。返回插入后的值数量k2000【key-value-value-...】--jedis.rpush====>"+jedis.rpush("k2000","v3","v4")); 102 /*按照索引下标获得元素(从左到右)*/ 103 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 104 /*从左边吐出一个值。值在键在,值亡键亡。*/ 105 System.out.println("从左边吐出一个值。值在键在,值亡键亡。k2000【key】--jedis.lpop====>"+jedis.lpop("k2000")); 106 /*按照索引下标获得元素(从左到右)*/ 107 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 108 /*从右边吐出一个值。值在键在,值亡键亡。*/ 109 System.out.println("从右边吐出一个值。值在键在,值亡键亡。k2000【key】--jedis.rpop====>"+jedis.rpop("k2000")); 110 /*按照索引下标获得元素(从左到右)*/ 111 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 112 /*从左边插入一个或多个值。*/ 113 System.out.println("从左边插入一个或多个值。返回插入后的值数量k3000【key-value-value-...】--jedis.lpush====>"+jedis.lpush("k3000","v3000","v3001")); 114 /*按照索引下标获得元素(从左到右)*/ 115 System.out.println("按照索引下标获得元素(从左到右)k3000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k3000", 0, 10000)); 116 /*从<key1>列表右边吐出一个值,插到<key2>列表左边。*/ 117 System.out.println("从<key1>列表右边吐出一个值,插到<key2>列表左边。k2000【key1,key2】--jedis.rpoplpush====>"+jedis.rpoplpush("k2000", "k3000")); 118 /*按照索引下标获得元素(从左到右)*/ 119 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 120 /*按照索引下标获得元素(从左到右)*/ 121 System.out.println("按照索引下标获得元素(从左到右)k3000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k3000", 0, 10000)); 122 /*按照索引下标获得元素(从左到右)*/ 123 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0,获取第一个值】--jedis.lindex====>"+jedis.lindex("k2000", 0)); 124 /*获得列表长度*/ 125 System.out.println("获得列表长度k2000【key】--jedis.llen====>"+jedis.llen("k2000")); 126 /*获得列表长度*/ 127 System.out.println("获得列表长度k3000【key】--jedis.llen====>"+jedis.llen("k3000")); 128 /*在<value>的前面插入<newvalue>*/ 129 System.out.println("在<value>的前面插入<newvalue>k2000【key-LIST_POSITION.BEFORE-value-newvalue】--jedis.linsert====>"+jedis.linsert("k2000", LIST_POSITION.BEFORE, "v1", "v2333")); 130 /*在<value>的后面插入<newvalue>*/ 131 System.out.println("在<value>的后面插入<newvalue>k2000【key-LIST_POSITION.AFTER-value-newvalue】--jedis.linsert====>"+jedis.linsert("k2000", LIST_POSITION.AFTER, "v1", "v2444")); 132 /*按照索引下标获得元素(从左到右)*/ 133 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 134 /*从左边删除n个value(从左到右)*/ 135 System.out.println("从左边删除n个value(从左到右)k2000【key-10000-value】--jedis.lrem====>"+jedis.lrem("k2000", 10000, "v1")); 136 /*按照索引下标获得元素(从左到右)*/ 137 System.out.println("按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>"+jedis.lrange("k2000", 0, 10000)); 138 /*删除某个键*/ 139 System.out.println("删除某个键,1表示删除成功,0表示删除失败k2000【key】--jedis.del====>"+jedis.del("k2000")); 140 /*删除某个键*/ 141 System.out.println("删除某个键,1表示删除成功,0表示删除失败k3000【key】--jedis.del====>"+jedis.del("k3000")); 142 System.out.println(); 143 144 /**************************Set-k4000*************************/ 145 System.out.println("**************************Set-k4000-k5000*************************"); 146 /*Redis set对外提供的功能与list类似是一个列表的功能, 147 特殊之处在于set是可以自动排重的,当你需要存储一个列表数据, 148 又不希望出现重复数据时,set是一个很好的选择, 149 并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。*/ 150 /*Redis的Set是string类型的无序集合。 151 它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。*/ 152 /*将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。*/ 153 System.out.println("将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k4000【key-value-value-...】--jedis.sadd====>"+jedis.sadd("k4000", "v4001", "v4002", "v4003")); 154 /*取出该集合的所有值。*/ 155 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 156 /*判断集合<key>是否为含有该<value>值,有返回1,没有返回0*/ 157 System.out.println("判断集合<key>是否为含有该<value>值,有返回true,没有返回false。k4000【key-value】--jedis.get====>"+jedis.sismember("k4000", "v4001")); 158 /*返回该集合的元素个数。*/ 159 System.out.println("返回该集合的元素个数。k4000【key】--jedis.scard====>"+jedis.scard("k4000")); 160 /*删除集合中的某个元素。*/ 161 System.out.println("删除集合中的某个元素。k4000【key-value-value-...】--jedis.srem====>"+jedis.srem("k4000", "v4001", "v4002")); 162 /*取出该集合的所有值。*/ 163 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 164 /*将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。*/ 165 System.out.println("将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k4000【key-value-value-...】--jedis.sadd====>"+jedis.sadd("k4000", "v4001", "v4002")); 166 /*取出该集合的所有值。*/ 167 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 168 /*随机从该集合中吐出一个值。*/ 169 System.out.println("随机从该集合中吐出一个值。k4000【key】--jedis.spop====>"+jedis.spop("k4000")); 170 /*取出该集合的所有值。*/ 171 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 172 /*随机从该集合中取出1个值。不会从集合中删除*/ 173 System.out.println("随机从该集合中取出1个值。不会从集合中删除。k4000【key】--jedis.get====>"+jedis.srandmember("k4000")); 174 /*取出该集合的所有值。*/ 175 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 176 /*随机从该集合中取出1个值。不会从集合中删除*/ 177 System.out.println("随机从该集合中取出n个值。不会从集合中删除。k4000【key-num】--jedis.get====>"+jedis.srandmember("k4000", 2)); 178 /*取出该集合的所有值。*/ 179 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 180 /*删除某个键*/ 181 System.out.println("删除某个键,1表示删除成功,0表示删除失败k4000【key】--jedis.del====>"+jedis.del("k4000")); 182 /*删除某个键*/ 183 System.out.println("删除某个键,1表示删除成功,0表示删除失败k5000【key】--jedis.del====>"+jedis.del("k5000")); 184 /*将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。*/ 185 System.out.println("将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k4000【key-value-value-...】--jedis.sadd====>"+jedis.sadd("k4000", "v4001", "v5002", "v4003")); 186 /*将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。*/ 187 System.out.println("将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k5000【key-value-value-...】--jedis.sadd====>"+jedis.sadd("k5000", "v4001", "v5002", "v5003")); 188 /*取出该集合的所有值。*/ 189 System.out.println("取出该集合的所有值。k4000【key】--jedis.smembers====>"+jedis.smembers("k4000")); 190 /*取出该集合的所有值。*/ 191 System.out.println("取出该集合的所有值。k5000【key】--jedis.smembers====>"+jedis.smembers("k5000")); 192 /*返回两个集合的交集元素。*/ 193 System.out.println("返回两个集合的交集元素。【key1-key2】--jedis.sinter====>"+jedis.sinter("k4000", "k5000")); 194 /*返回两个集合的并集元素。*/ 195 System.out.println("返回两个集合的并集元素。【key1-key2】--jedis.sunion====>"+jedis.sunion("k4000", "k5000")); 196 /*返回两个集合的差集元素。*/ 197 System.out.println("返回两个集合的差集元素。【key1-key2】--jedis.sdiff====>"+jedis.sdiff("k4000", "k5000")); 198 System.out.println(); 199 200 /**************************hash-k6000*************************/ 201 System.out.println("**************************hash-k6000*************************"); 202 /*Redis hash 是一个键值对集合。 203 Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 204 类似Java里面的Map<String,Object>*/ 205 /*给<key>集合中的 <field>键赋值<value>*/ 206 System.out.println("给<key>集合中的 <field>键赋值<value>。k6000-name-yujie【key-field-value】--jedis.hset====>"+jedis.hset("k6000", "name", "yujie")); 207 /*从<key1>集合<field> 取出 value*/ 208 System.out.println("从<key1>集合<field> 取出 value。k6000-name【key-field】--jedis.hget====>"+jedis.hget("k6000", "name")); 209 /*参数Map*/ 210 Map<String, String> hashmap = new HashMap<String, String>(); 211 hashmap.put("age", "18"); 212 hashmap.put("sex", "man"); 213 /*批量设置hash的值*/ 214 System.out.println("批量设置hash的值。k6000。age-18,sex-man【key-map】--jedis.hmset====>"+jedis.hmset("k6000", hashmap)); 215 /*查看哈希表 key 中,给定域 field 是否存在。*/ 216 System.out.println("查看哈希表 key 中,给定域 field 是否存在。k6000-name【key-field】--jedis.hexists====>"+jedis.hexists("k6000", "name")); 217 /*列出该hash集合的所有field*/ 218 System.out.println("列出该hash集合的所有field。k6000【key】--jedis.hkeys====>"+jedis.hkeys("k6000")); 219 /*列出该hash集合的所有value*/ 220 System.out.println("列出该hash集合的所有value。k6000【key】--jedis.hvals====>"+jedis.hvals("k6000")); 221 /*为哈希表 key 中的域 field 的值加上增量 increment*/ 222 System.out.println("为哈希表 key 中的域 field 的值加上增量 increment。k6000-age -10【key-field-num】--jedis.hincrBy====>"+jedis.hincrBy("k6000", "age", 10)); 223 /*将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在*/ 224 System.out.println("将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。k6000-hight-180【key-field-value】--jedis.hsetnx====>"+jedis.hsetnx("k6000", "hight", "180")); 225 System.out.println(); 226 227 /**************************zset-k7000*************************/ 228 System.out.println("**************************zset-k7000*************************"); 229 /*Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。 230 不同之处是有序集合的所有成员都关联了一个评分(score) , 231 这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。 232 集合的成员是唯一的,但是评分可以是重复了 。因为元素是有序的, 233 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。 234 访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。*/ 235 /*将一个 member元素及其 score值加入到有序集 key当中。*/ 236 System.out.println("将一个member元素及其 score值加入到有序集 key当中。k7000-50-v7050【key-score-value】--jedis.zadd====>"+jedis.zadd("k7000", 50, "v7050")); 237 /*参数Map*/ 238 Map<String, Double> zsetmap = new HashMap<String, Double>(); 239 zsetmap.put("v7060", 60.0); 240 zsetmap.put("v7070", 70.0); 241 /*将多个member元素及其 score值加入到有序集 key当中。*/ 242 System.out.println("将多个member元素及其 score值加入到有序集 key当中。" 243 + "k7000。v7060-60.0,v7070-70.0【key-score-value】--jedis.zadd====>"+jedis.zadd("k7000", zsetmap)); 244 System.out.println(); 245 246 /*从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素*/ 247 System.out.println("从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素。从0开始。\n" 248 + "k7000-0-10000【key-start-stop】--jedis.zrange====>"+jedis.zrange("k7000", 0, 10000)); 249 /*从大到小排列,返回有序集 key中,下标在<start> <stop>之间的元素*/ 250 System.out.println("从大到小排列,返回有序集 key中,下标在<start> <stop>之间的元素。从0开始。\n" 251 + "k7000-0-10000【key-start-stop】--jedis.zrevrange====>"+jedis.zrevrange("k7000", 0, 10000)); 252 System.out.println(); 253 254 /*从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。*/ 255 System.out.println( 256 "从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素," 257 + "带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。" 258 + "\n k7000-0-10000【key-start-stop】--jedis.zrangeWithScores"); 259 Set<Tuple> zrangeWithScores = jedis.zrangeWithScores("k7000", 0, 10000); 260 /*遍历*/ 261 for(Tuple t : zrangeWithScores) { 262 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 263 } 264 /*从大到小排列,返回有序集 key中,下标在<start> <stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。*/ 265 System.out.println( 266 "从大到小排列,返回有序集 key中,下标在<start> <stop>之间的元素," 267 + "带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。" 268 + "\n k7000-0-10000【key-start-stop】--jedis.zrevrangeWithScores"); 269 Set<Tuple> zrevrangeWithScores = jedis.zrevrangeWithScores("k7000", 0, 10000); 270 /*遍历*/ 271 for(Tuple t : zrevrangeWithScores) { 272 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 273 } 274 System.out.println(); 275 276 /*从小到大排列,返回有序集 key中,所有 score值介于min和 max之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。*/ 277 System.out.println("从小到大排列,返回有序集 key中,所有 score值介于min和 max之间(包括等于 min 或 max )的成员\n" + 278 " 有序集成员按 score 值递增(从小到大)次序排列。从0开始。" 279 + "\n k7000-0-1000【key-min-max】--jedis.zrangeByScore====>" 280 +jedis.zrangeByScore("k7000", 0, 1000)); 281 /*从大到小排列,返回有序集 key中,所有 score值介于min和 max之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从大到小)次序排列。*/ 282 System.out.println("从大到小排列,返回有序集 key中,所有 score值介于min和 max之间(包括等于 min 或 max )的成员\n" + 283 " 有序集成员按 score 值递增(从小到大)次序排列。从0开始。" 284 + "\n k7000-0-1000【key-min-max】--jedis.zrevrangeByScore====>" 285 +jedis.zrevrangeByScore("k7000", 1000, 0) + "\n"); 286 287 /*从小到大排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 288 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。*/ 289 System.out.println("从小到大排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。\n" + 290 " 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。" 291 + "\n k7000-0-1000【key-min-max】--jedis.zrangeByScoreWithScores" 292 ); 293 Set<Tuple> zrangeByScoreWithScores = jedis.zrangeByScoreWithScores("k7000", 0, 1000); 294 /*遍历*/ 295 for(Tuple t : zrangeByScoreWithScores) { 296 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 297 } 298 /*从大到小排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 299 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。*/ 300 System.out.println("从大到小排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。\n" + 301 " 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。" 302 + "\n k7000-0-1000【key-min-max】--jedis.zrevrangeByScoreWithScores" 303 ); 304 Set<Tuple> zrevrangeByScoreWithScores = jedis.zrevrangeByScoreWithScores("k7000", 1000, 0); 305 /*遍历*/ 306 for(Tuple t : zrevrangeByScoreWithScores) { 307 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 308 } 309 System.out.println(); 310 311 /*分页。从小到大排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 312 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。*/ 313 System.out.println("分页。从小到大排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。\r\n" + 314 " 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。" 315 + "\n k7000-0-1000-0-2【key-min-max-offset-count】--jedis.zrangeByScoreWithScores"); 316 Set<Tuple> fenyezrangeByScoreWithScores = jedis.zrangeByScoreWithScores("k7000", 0, 1000, 0, 2); 317 /*遍历*/ 318 for(Tuple t : fenyezrangeByScoreWithScores) { 319 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 320 } 321 /*分页。从大到小排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 322 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。*/ 323 System.out.println("分页。从大到小排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。\r\n" + 324 " 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。" 325 + "\n k7000-0-1000-0-2【key-min-max-offset-count】--jedis.zrevrangeByScoreWithScores"); 326 Set<Tuple> fenyezrevrangeByScoreWithScores = jedis.zrevrangeByScoreWithScores("k7000", 1000, 0, 0, 2); 327 /*遍历*/ 328 for(Tuple t : fenyezrevrangeByScoreWithScores) { 329 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 330 } 331 System.out.println(); 332 333 /*为元素的score加上增量*/ 334 System.out.println("为元素的score加上增量。k7000-5-v7060【key-score-value】--jedis.zincrby====>"+jedis.zincrby("k7000", 5, "v7060")); 335 /*从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。*/ 336 System.out.println( 337 "从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素," 338 + "带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。" 339 + "\n k7000-0-10000【key-start-stop】--jedis.zrangeWithScores"); 340 Set<Tuple> zrangeWithScores2 = jedis.zrangeWithScores("k7000", 0, 10000); 341 /*遍历*/ 342 for(Tuple t : zrangeWithScores2) { 343 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 344 } 345 System.out.println(); 346 347 /*删除该集合下,指定值的元素*/ 348 System.out.println("删除该集合下,指定值的元素。k7000-v7060【key-value】--jedis.zrem====>"+jedis.zrem("k7000", "v7060")); 349 /*从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。*/ 350 System.out.println( 351 "从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素," 352 + "带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。" 353 + "\n k7000-0-10000【key-start-stop】--jedis.zrangeWithScores"); 354 Set<Tuple> zrangeWithScores3 = jedis.zrangeWithScores("k7000", 0, 10000); 355 /*遍历*/ 356 for(Tuple t : zrangeWithScores3) { 357 System.out.println("值:" + t.getElement() + ",分数:" + t.getScore()); 358 } 359 System.out.println(); 360 361 /*统计该集合,分数区间内的元素个数*/ 362 System.out.println("统计该集合,分数区间内的元素个数。从0开始。k7000-0-1000【key-min-max】--jedis.zcount====>" 363 +jedis.zcount("k7000", 0, 1000)); 364 365 /*返回该值在集合中的排名,从0开始。*/ 366 System.out.println("返回该值在集合中的排名,从0开始。k7000-v7070【key-value】--jedis.zrank====>" 367 +jedis.zrank("k7000", "v7070")); 368 369 /*关闭Redis连接*/ 370 System.out.println("关闭Redis连接"); 371 jedis.close(); 372 } 373 }
结果:
1 输出ping结果、PONG表示连接成功:PONG 2 3 **************************key-k520************************* 4 遍历输出所有键: 5 省,市,k1,sex,k3,k4,k5,k6,name,k6000,k7000,k520,k5000,k4000,k999, 6 判断某个键是否存在。k520【key】--jedis.exists====>true 7 查看键的类型。k520【key】--jedis.type====>string 8 删除某个键,1表示删除成功,0表示删除失败。k520【key】--jedis.del====>1 9 为键值设置过期时间,单位秒。k520-600【key-second】--jedis.expire====>0 10 查看还有多少秒过期,大于0的数表示剩余秒数,-1表示永不过期,-2表示已过期。k520【key】--jedis.ttl====>-2 11 查看当前数据库的key的数量--jedis.dbSize====>14 12 **************************String-k999-k520************************* 13 查询对应键值。k999【key】--jedis.get====>v9991 14 添加键值对。k999-v999【key-value】--jedis.set====>OK 15 将给定的<value> 追加到原值的末尾,输出添加后值的长度。 k999-1【key-value】--jedis.append====>5 16 获得值的长度。k999【key】--jedis.strlen====>5 17 只有在 key不存在时设置 key的值,不存在时设置后返回1,存在时不能设置返回0。k520-520【key-value】--jedis.setnx====>1 18 将 key中储存的数字值增1,只能对数字值操作,如果为空,新增值为1。k520【key】--jedis.incr====>521 19 将 key中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1。k520【key】--jedis.decr====>520 20 将 key中储存的数字值增加。自定义步长。k520-100【key-num】--jedis.incrBy,显示增加后的值====>620 21 将 key中储存的数字值减少。自定义步长。k520-100【key-num】--jedis.decrBy,显示减少后的值====>520 22 同时设置一个或多个key-value对。name-余杰,sex-男【key-value,key-value】--jedis.mset====>OK 23 查询对应键值。name, sex【key,key】--jedis.mget====>[余杰, 男] 24 同时设置一个或多个 key-value 对,当且仅当所有给定 key都不存在。省-福建,市-福州【key-value,key-value】。不存在时设置后返回1,存在时不能设置返回0--jedis.msetnx====>0 25 获得值的范围,类似java中的substring。从0开始计算。k520-0-1【键-开始(包括)-结尾(包括),key-0-1,表示获取前两位】--jedis.getrange====>52 26 用 <value>覆写<key> 所储存的字符串值,从<起始位置>开始。k520【从0开始计算,键-起始位置(包括)-值,key-0-99,表示替换前两位为99】--jedis.setrange====>3 27 设置键值的同时,设置过期时间,单位秒。k520【key-60-888,表示设置key的值为888,且60秒后过期】--jedis.setex====>OK 28 查看还有多少秒过期,大于0的数表示剩余秒数,-1表示永不过期,-2表示已过期k520【key】--jedis.ttl====>60 29 以新换旧,设置了新值同时获得旧值。k520【key-001,表示设置key的新值为001,且获取原来的值】--jedis.getSet====>888 30 31 **************************List-k2000-k3000************************* 32 从左边插入一个或多个值。返回插入后的值数量k2000【key-value-value-...】--jedis.lpush====>2 33 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v2, v1] 34 从右边插入一个或多个值。返回插入后的值数量k2000【key-value-value-...】--jedis.rpush====>4 35 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v2, v1, v3, v4] 36 从左边吐出一个值。值在键在,值亡键亡。k2000【key】--jedis.lpop====>v2 37 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v1, v3, v4] 38 从右边吐出一个值。值在键在,值亡键亡。k2000【key】--jedis.rpop====>v4 39 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v1, v3] 40 从左边插入一个或多个值。返回插入后的值数量k3000【key-value-value-...】--jedis.lpush====>2 41 按照索引下标获得元素(从左到右)k3000【key-0-10000】--jedis.lrange====>[v3001, v3000] 42 从<key1>列表右边吐出一个值,插到<key2>列表左边。k2000【key1,key2】--jedis.rpoplpush====>v3 43 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v1] 44 按照索引下标获得元素(从左到右)k3000【key-0-10000】--jedis.lrange====>[v3, v3001, v3000] 45 按照索引下标获得元素(从左到右)k2000【key-0,获取第一个值】--jedis.lindex====>v1 46 获得列表长度k2000【key】--jedis.llen====>1 47 获得列表长度k3000【key】--jedis.llen====>3 48 在<value>的前面插入<newvalue>k2000【key-LIST_POSITION.BEFORE-value-newvalue】--jedis.linsert====>2 49 在<value>的后面插入<newvalue>k2000【key-LIST_POSITION.AFTER-value-newvalue】--jedis.linsert====>3 50 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v2333, v1, v2444] 51 从左边删除n个value(从左到右)k2000【key-10000-value】--jedis.lrem====>1 52 按照索引下标获得元素(从左到右)k2000【key-0-10000】--jedis.lrange====>[v2333, v2444] 53 删除某个键,1表示删除成功,0表示删除失败k2000【key】--jedis.del====>1 54 删除某个键,1表示删除成功,0表示删除失败k3000【key】--jedis.del====>1 55 56 **************************Set-k4000-k5000************************* 57 将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k4000【key-value-value-...】--jedis.sadd====>1 58 取出该集合的所有值。k4000【key】--jedis.smembers====>[v5002, v4001, v4002, v4003] 59 判断集合<key>是否为含有该<value>值,有返回true,没有返回false。k4000【key-value】--jedis.get====>true 60 返回该集合的元素个数。k4000【key】--jedis.scard====>4 61 删除集合中的某个元素。k4000【key-value-value-...】--jedis.srem====>2 62 取出该集合的所有值。k4000【key】--jedis.smembers====>[v4003, v5002] 63 将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k4000【key-value-value-...】--jedis.sadd====>2 64 取出该集合的所有值。k4000【key】--jedis.smembers====>[v4003, v4001, v5002, v4002] 65 随机从该集合中吐出一个值。k4000【key】--jedis.spop====>v4001 66 取出该集合的所有值。k4000【key】--jedis.smembers====>[v4003, v5002, v4002] 67 随机从该集合中取出1个值。不会从集合中删除。k4000【key】--jedis.get====>v4003 68 取出该集合的所有值。k4000【key】--jedis.smembers====>[v4003, v5002, v4002] 69 随机从该集合中取出n个值。不会从集合中删除。k4000【key-num】--jedis.get====>[v5002, v4003] 70 取出该集合的所有值。k4000【key】--jedis.smembers====>[v4003, v5002, v4002] 71 删除某个键,1表示删除成功,0表示删除失败k4000【key】--jedis.del====>1 72 删除某个键,1表示删除成功,0表示删除失败k5000【key】--jedis.del====>1 73 将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k4000【key-value-value-...】--jedis.sadd====>3 74 将一个或多个 member元素加入到集合key当中,已经存在于集合的 member元素将被忽略。k5000【key-value-value-...】--jedis.sadd====>3 75 取出该集合的所有值。k4000【key】--jedis.smembers====>[v5002, v4001, v4003] 76 取出该集合的所有值。k5000【key】--jedis.smembers====>[v5003, v5002, v4001] 77 返回两个集合的交集元素。【key1-key2】--jedis.sinter====>[v5002, v4001] 78 返回两个集合的并集元素。【key1-key2】--jedis.sunion====>[v4003, v5003, v5002, v4001] 79 返回两个集合的差集元素。【key1-key2】--jedis.sdiff====>[v4003] 80 81 **************************hash-k6000************************* 82 给<key>集合中的 <field>键赋值<value>。k6000-name-yujie【key-field-value】--jedis.hset====>0 83 从<key1>集合<field> 取出 value。k6000-name【key-field】--jedis.hget====>yujie 84 批量设置hash的值。k6000。age-18,sex-man【key-map】--jedis.hmset====>OK 85 查看哈希表 key 中,给定域 field 是否存在。k6000-name【key-field】--jedis.hexists====>true 86 列出该hash集合的所有field。k6000【key】--jedis.hkeys====>[name, hight, age, sex] 87 列出该hash集合的所有value。k6000【key】--jedis.hvals====>[yujie, 18, man, 180] 88 为哈希表 key 中的域 field 的值加上增量 increment。k6000-age -10【key-field-num】--jedis.hincrBy====>28 89 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。k6000-hight-180【key-field-value】--jedis.hsetnx====>0 90 91 **************************zset-k7000************************* 92 将一个member元素及其 score值加入到有序集 key当中。k7000-50-v7050【key-score-value】--jedis.zadd====>0 93 将多个member元素及其 score值加入到有序集 key当中。k7000。v7060-60.0,v7070-70.0【key-score-value】--jedis.zadd====>1 94 95 从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素。从0开始。 96 k7000-0-10000【key-start-stop】--jedis.zrange====>[v7050, v7060, v7070] 97 从大到小排列,返回有序集 key中,下标在<start> <stop>之间的元素。从0开始。 98 k7000-0-10000【key-start-stop】--jedis.zrevrange====>[v7070, v7060, v7050] 99 100 从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。 101 k7000-0-10000【key-start-stop】--jedis.zrangeWithScores 102 值:v7050,分数:50.0 103 值:v7060,分数:60.0 104 值:v7070,分数:70.0 105 从大到小排列,返回有序集 key中,下标在<start> <stop>之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。 106 k7000-0-10000【key-start-stop】--jedis.zrevrangeWithScores 107 值:v7070,分数:70.0 108 值:v7060,分数:60.0 109 值:v7050,分数:50.0 110 111 从小到大排列,返回有序集 key中,所有 score值介于min和 max之间(包括等于 min 或 max )的成员 112 有序集成员按 score 值递增(从小到大)次序排列。从0开始。 113 k7000-0-1000【key-min-max】--jedis.zrangeByScore====>[v7050, v7060, v7070] 114 从大到小排列,返回有序集 key中,所有 score值介于min和 max之间(包括等于 min 或 max )的成员 115 有序集成员按 score 值递增(从小到大)次序排列。从0开始。 116 k7000-0-1000【key-min-max】--jedis.zrevrangeByScore====>[v7070, v7060, v7050] 117 118 从小到大排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 119 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。 120 k7000-0-1000【key-min-max】--jedis.zrangeByScoreWithScores 121 值:v7050,分数:50.0 122 值:v7060,分数:60.0 123 值:v7070,分数:70.0 124 从大到小排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 125 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。 126 k7000-0-1000【key-min-max】--jedis.zrevrangeByScoreWithScores 127 值:v7070,分数:70.0 128 值:v7060,分数:60.0 129 值:v7050,分数:50.0 130 131 分页。从小到大排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 132 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。 133 k7000-0-1000-0-2【key-min-max-offset-count】--jedis.zrangeByScoreWithScores 134 值:v7050,分数:50.0 135 值:v7060,分数:60.0 136 分页。从大到小排列,返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 137 有序集成员按 score 值递增(从小到大)次序排列,可以让分数一起和值返回到结果集。从0开始。 138 k7000-0-1000-0-2【key-min-max-offset-count】--jedis.zrevrangeByScoreWithScores 139 值:v7070,分数:70.0 140 值:v7060,分数:60.0 141 142 为元素的score加上增量。k7000-5-v7060【key-score-value】--jedis.zincrby====>65.0 143 从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。 144 k7000-0-10000【key-start-stop】--jedis.zrangeWithScores 145 值:v7050,分数:50.0 146 值:v7060,分数:65.0 147 值:v7070,分数:70.0 148 149 删除该集合下,指定值的元素。k7000-v7060【key-value】--jedis.zrem====>1 150 从小到大排列,返回有序集 key中,下标在<start> <stop>之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。从0开始。 151 k7000-0-10000【key-start-stop】--jedis.zrangeWithScores 152 值:v7050,分数:50.0 153 值:v7070,分数:70.0 154 155 统计该集合,分数区间内的元素个数。从0开始。k7000-0-1000【key-min-max】--jedis.zcount====>2 156 返回该值在集合中的排名,从0开始。k7000-v7070【key-value】--jedis.zrank====>1