REDIS提供的map,list,set,sortedset使用测试

public class RedisTest {public  JedisPool jedisPool = null;public void init(){//创建配置信息JedisPoolConfig pool = new JedisPoolConfig();//设置最大的总链接数pool.setMaxTotal(300);//设置最大空闲链接数pool.setMaxIdle(100);//设置最大等待时间pool.setMaxWaitMillis(10000);//在获取实例的时候进行validate操作,从而使获得的实例都是可用的pool.setTestOnBorrow(true);//使用配置信息,ip和端口来初始化一个链接池jedisPool = new JedisPool(pool,"192.168.0.85", 6379);  }/*** * 测试在redis中使用map进行操作* * * */public void testMap(){//获得一个实例Jedis jedis = jedisPool.getResource();//整个map的key(通过这个key来获取map对象)String redisMapKey="test_map";try {//选用数据库13jedis.select(13);//删除test_map所对应的值(也就是map对象)jedis.del(redisMapKey);/*** 往map中插入key-value开始* *///这个语句的意思可理解为:向test_map对应的map中插入一个key为key_1,value为1的key-value对jedis.hset(redisMapKey, "key_1", "1");jedis.hset(redisMapKey, "key_2", "2");jedis.hset(redisMapKey, "key_3", "3");jedis.hset(redisMapKey, "key_4", "4");jedis.hset(redisMapKey, "key_5", "5");jedis.hset(redisMapKey, "key_6", "6");/*** 往map中插入key-value结束* *//*测试map的get操作*/System.out.println("test map's get:-----------");/*给出map所对应的key(redisMapKey变量),以及想从map中获得的value的key(key_1)*/String hget = jedis.hget(redisMapKey, "key_1");System.out.println(hget);/*获得map中的所有key值*/System.out.println("test get all keys:--------------- ");/*给出map所对应的key(redisMapKey变量)*//*返回的key是封装在set中的,因为key是唯一的*/Set<String> hkeys = jedis.hkeys(redisMapKey);for(String str:hkeys){//输出获得的map的所有keySystem.out.println(str);}/*获得map中的所有value值*/System.out.println("test get all values:------------------");/*给出map所对应的key(redisMapKey变量)*//*反悔的值封装在list中,因为value的值是可重复的*/List<String> hvals = jedis.hvals(redisMapKey);for(String str:hvals){//输出获得的map的所有valueSystem.out.println(str);}/*查询在指定的map中是否包含某个key值对对应的key-value对*/System.out.println("test if a key exist in the map:------------------");/*给出map所对应的key(redisMapKey变量)和要在该map中查询的key的值*//*如果存在返回true,如果不存在返回false*/Boolean hexists = jedis.hexists(redisMapKey, "key_1");Boolean hexists2 = jedis.hexists(redisMapKey, "key_100");System.out.println("key_1's exit result is: "+hexists+", key_100's exit result is: "+hexists2);/*获得map中的所有key-value对*/System.out.println("test get all :----------------------");/*给出map所对应的key(redisMapKey变量)*/Map<String, String> hgetAll = jedis.hgetAll(redisMapKey); Set<Entry<String, String>> entrySet = hgetAll.entrySet();for(Entry<String, String> en:entrySet){/*输出map中的所有key-value对*/System.out.println(en.getKey()+":"+en.getValue());}/*获得map的长度*/System.out.println("get the length of hmap:-------------------");/*给出map所对应的key(redisMapKey变量)*/Long hlen = jedis.hlen(redisMapKey);System.out.println(hlen); /*对map中的某个key的value进行累加操作*/System.out.println("test increment:--------------");System.out.println("before increment:");List<String> hvals2 = jedis.hvals(redisMapKey);for(String str:hvals2){/*输出在累加之前的值*/System.out.println(str);}/*给redisMapKey变量对应的map中的key值为key_6的value的值累加2 返回值是累加后的结果*/Long hincrBy = jedis.hincrBy(redisMapKey, "key_6", 2);System.out.println("incremnt value is:"+hincrBy);System.out.println("after increment:");List<String> hvals3 = jedis.hvals(redisMapKey);for(String str:hvals3){/*输出在累加之后的值*/System.out.println(str);}/*删除map中的某个key对对应的key-value对*/System.out.println("test del:-----------------------");/*给出redisMapKey变量来指出要删除哪个map,然后key_1指出要删除该map中的哪个key-value对*/jedis.hdel(redisMapKey, "key_1");Set<String> afterDelKeys=jedis.hkeys(redisMapKey);for(String str:afterDelKeys){//输出删除操作后map中的所有key值System.out.println(str);}} catch (Exception e) {e.printStackTrace();}finally{jedis.close();}}/*** * 测试redis中的list* */public void testLst(){/*获得一个jedis链接实例*/Jedis jedis = jedisPool.getResource();try {/*选择数据库13*/jedis.select(13);/*向test_lst所对应的list中插入123和223两个值  (可以一直往后写,因为采用的是。。。的传参方式)* 与lpush对应的还有rpush* lpush从左端插入元素,配合lpop就形成了栈,配合rpop就是队列* rpush从右侧插入元素,配合rpop就形成了栈,配合lpup就是队列* * */jedis.lpush("test_lst", "123","223");/*获得test_lst中所有的值(从0开始,到-1结束就是所有的值;也可任意设置开始和结束下标)*/List<String> lrange = jedis.lrange("test_lst", 0, -1);System.out.println("before pop:");/*输出test_lst的长度*/System.out.println("list's length is: " + jedis.llen("test_lst"));for(String str:lrange){System.out.println(str);}/*向test_lst中下标为0的位置插入一个setted_value*/jedis.lset("test_lst", 0, "setted_value");/*从test_lst的右端弹出一个值(也有从左端弹出的为lpop),这个值会从lst中移除*//*如果我们一直在下标为0的位置插入元素,然后使用rpop,那么我们模拟的就是队列,先进先出* 如果使用lpop,那么模拟的就是栈,后劲先出* */String rpop = jedis.rpop("test_lst");System.out.println("rpoped value is : "+rpop);lrange = jedis.lrange("test_lst", 0, -1);System.out.println("after pop:");for(String str:lrange){//输出pop操作后的test_lst中的值System.out.println(str);}System.out.println("after trim");/*对test_lst进行裁剪,指定了裁剪的开始位置和结束位置。裁剪之后test_lst只包含[开始位置,结束位置]区间的值*/jedis.ltrim("test_lst", 0, 3);lrange = jedis.lrange("test_lst", 0, -1);for(String str:lrange){//输出裁剪结果System.out.println(str);}/*从test_lst中移除值为setted_value的第二个值 如果把2换成0,那么所有的setted_value都会被移除*/jedis.lrem("test_lst", 2, "setted_value");System.out.println("after removed:");                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               lrange = jedis.lrange("test_lst", 0, -1);for(String str:lrange){//输出移除后的test_lst的所有值System.out.println(str);}} catch (Exception e) {e.printStackTrace();}finally{jedis.close();}  }/*** * 测试redis中的set* */public void testSet(){Jedis jedis = jedisPool.getResource();//获得jedis链接实例/*两个set 一个叫test_set 一个叫 test_set_two*/String redisSetKey="test_set";String redisSetKeyTwo="test_set_two";try {/*选择数据库13,并删除两个set*/jedis.select(13);jedis.del(redisSetKey);jedis.del(redisSetKeyTwo);System.out.println("test set's add:------------------------");/*向redisSetKey中添加元素,这里添加了1~6供六个元素*/jedis.sadd(redisSetKey, "1","2","3","4","5","6");/*向redisSetKeyTwo中添加 2 4 6 8 10 这五个元素*/jedis.sadd(redisSetKeyTwo, "2","4","6","8","10");System.out.println("test get all memebers of a set:-----------");/*获得set中的所有值,返回一个set*/Set<String> smembers = jedis.smembers(redisSetKey);for(String str:smembers){//遍历输出set中的值System.out.println(str);}System.out.println("test if a member exits in the set:-------------");/*分别判断1 和 7 是否属于redisSetKey所指向的set中*/Boolean sismember = jedis.sismember(redisSetKey, "1");Boolean sismember2 = jedis.sismember(redisSetKey, "7");System.out.println("1 in set is:" +sismember+",7 in set is: "+sismember2);System.out.println("test del set's memeber:-------------------------");/*删除redisSetKey所指向的set中1这个值(set和list不同,所有的值都是唯一的,所以不存在指定要删除的个数一说)*/jedis.srem(redisSetKey, "1");System.out.println("after del:");Set<String> smembers1 = jedis.smembers(redisSetKey);for(String str:smembers1){//检验是否成功删除System.out.println(str);}System.out.println("test set's pop:--------------------");/*随机从redisSetKey所指向的set中取出一个值(在set中删除并返回)*/String spop = jedis.spop(redisSetKey);System.out.println("poped value is :"+spop);System.out.println("after pop :");Set<String> smembers2 = jedis.smembers(redisSetKey);for(String str:smembers2){//检验弹出后的setSystem.out.println(str);} System.out.println("test set's random:---------------------");/*随机从redisSetKey所指向的set中返回一个值(不在set中删除仅返回)*/String srandmember = jedis.srandmember(redisSetKey);System.out.println("random value is :"+srandmember);System.out.println("after random:");Set<String> smembers3 = jedis.smembers(redisSetKey);for(String str:smembers3){//检验random之后set中是否少了值(检验结果是没有少)System.out.println(str);}System.out.println("test set's diff:-------------------");/*求一个新的set,这set中包含在redisSetKey中出现但不再redisSetKeyTwo中出现的所有元素(即 redisSetKey-redisSetKeyTwo)*/Set<String> sdiff = jedis.sdiff(redisSetKey,redisSetKeyTwo);for(String str:sdiff){System.out.println(str);}System.out.println("test set's inter:-------------------------");/*求一个新的set,这set中包含在redisSetKey中出现且在redisSetKeyTwo中出现的所有元素*/Set<String> sinter = jedis.sinter(redisSetKey,redisSetKeyTwo);for(String str:sinter){System.out.println(str);}System.out.println("test set's unino:-----------------------");/*求一个新的set,这set中包含在redisSetKey中出现或在redisSetKeyTwo中出现的所有元素*/Set<String> sunion = jedis.sunion(redisSetKey,redisSetKeyTwo);for(String str:sunion){System.out.println(str);}} catch (Exception e) {e.printStackTrace();}finally{jedis.close();}}/*** * 测试有序的set* */public void testSortSet(){/*获得redis链接实例*/Jedis jedis = jedisPool.getResource();/*有序的set的key,用来在redis中唯一标识一个有序的set 这里起名为 test_sort*/String redisSortedKey="test_sort";try {/*选用数据库13,并删除以前的test_sort所指向的value*/jedis.select(13);jedis.del(redisSortedKey);/*向有序set中插入zero,three,two,one,four这几个单词,* 它们前面的0,3,2,1,4代表他们的分数(score),在有序set中就是根据这个分数进行排序的* */jedis.zadd(redisSortedKey, 0, "zero");jedis.zadd(redisSortedKey, 3, "three");jedis.zadd(redisSortedKey, 2, "two");jedis.zadd(redisSortedKey, 1, "one");jedis.zadd(redisSortedKey, 4, "four");System.out.println("get the total number:----------------");/*获得数据的总数*/Long zcard = jedis.zcard(redisSortedKey);System.out.println(zcard);System.out.println("count the value between min-value and max-value:-----------------");/*统计分数在0到2之间的数据的个数,也就是score在[0,2]闭区间上的数据的个数*/Long zcount = jedis.zcount(redisSortedKey, 0, 2);System.out.println(zcount);System.out.println("test range:----------------------------");/*获得从开始下标到结束下标的排好序的set中的值(结束为-1,标识全部),同样也是闭区间*/Set<String> zrange = jedis.zrange(redisSortedKey, 0,-1);for(String str:zrange){System.out.println(str);}System.out.println("test rverse range:----------------------------");/*反序 获得从开始下标到结束下标的排好序的set中的值(结束为-1,标识全部),同样也是闭区间*/Set<String> zrevrange = jedis.zrevrange(redisSortedKey, 0, -1);for(String str:zrevrange){System.out.println(str);}System.out.println("test range by score:---------------------");/*获得两个分数之间的排好序的set中的值 同样也是闭区间*/Set<String> zrangeByScore = jedis.zrangeByScore(redisSortedKey, 2, 3);for(String str:zrangeByScore){System.out.println(str);}System.out.println("test range with scores:---------------------");/*获得从开始下标到结束下标的排好序的set中的值(结束为-1,标识全部),同样也是闭区间 不同的是返回值中包含了值所对应的分数*/Set<Tuple> zrangeWithScores = jedis.zrangeWithScores(redisSortedKey, 0, -1);for(Tuple tuple:zrangeWithScores){//tuple中封装了element和score对应与元素和分数System.out.println(tuple.getElement()+"------"+tuple.getScore());}System.out.println("test rank:---------------");/*获得某个元素在有序set中的排名(也就是排序位置)*/Long zrank = jedis.zrank(redisSortedKey, "three");System.out.println("the rank of three is :"+zrank);System.out.println("test rem:-----------------------------");/*删除某个元素*/jedis.zrem(redisSortedKey, "three");Set<String> zrange1 = jedis.zrange(redisSortedKey, 0,-1);for(String str:zrange1){System.out.println(str);}System.out.println("test reverse rank:------------------------");/*获得某个元素的倒序排名*/Long zrevrank = jedis.zrevrank(redisSortedKey, "four");System.out.println(zrevrank);System.out.println("test get score:----------------------------------------");/*获得某个元素所对应的分数*/Double zscore = jedis.zscore(redisSortedKey, "two");System.out.println("two's zscore is: "+zscore);} catch (Exception e) {}finally{jedis.close();}}public static void main(String[] args) {RedisTest test = new RedisTest();test.init();test.testSortSet();}
}                                                                                                                             

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 多线程-生产者、消费者

一、整体代码 ThreadDemo.java public class ThreadDemo { public static void main(String[] args) { Godown godown new Godown(0); Consumer c1 new Consumer(50, godown); Consumer c2 new Consumer(20, godown); Consumer c3 new Consumer(30, godown); Producer p1 …

scala初学之helloWorld

特此声明&#xff0c;本文中的代码 部分或全部来源王家林的scala教程&#xff1b;虽然王家林一直被大家所诟病&#xff0c;而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的&#xff0c;他只是拿过来翻译一次&#xff0c;看他的视频也是能…

scala初学之函数定义、流程控制、异常处理入门

特此声明&#xff0c;本文中的代码 部分或全部来源王家林的scala教程&#xff1b;虽然王家林一直被大家所诟病&#xff0c;而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的&#xff0c;他只是拿过来翻译一次&#xff0c;看他的视频也是能…

HGOI20190707 题解

Problem A 钢铁侠的诞生 现在有$n$个数字$a_i \leq 10^9 $&#xff0c;然后取出$m$个数字&#xff0c;保证合法。 从小到大输出剩余的$n-m$个数字。 对于100%的数据$m\leq n \leq 3\times 10^5$ Sol : 直接map映射然后用iterator来遍历整个map输出答案即可。 复杂度大概是$O(n…

scala初学之Tuple、Array、Map、文件操作入门实战

特此声明&#xff0c;本文中的代码 部分或全部来源王家林的scala教程&#xff1b;虽然王家林一直被大家所诟病&#xff0c;而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的&#xff0c;他只是拿过来翻译一次&#xff0c;看他的视频也是能…

Java连载3-编译与运行阶段详解JRE,JDK,JVM关系

一、 1.JDK下载地址&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 二、Java的加载与执行 1.Java程序运行包括&#xff1a; &#xff08;1&#xff09;编译阶段&#xff1a;检查Java源程序是否符合Java语法&#xff0c;符…

KMP算法NEXT数组纯手工生成

用一个实际的例子来说明&#xff0c;经历了看懂&#xff0c;看不懂&#xff0c;看懂&#xff0c;看不懂&#xff0c;看懂...后我终于决定把它记下来了。 例子字符串为&#xff1a;abaabaca 首先可以肯定&#xff0c;第一个位置永远位0&#xff0c;第二个位置永远为1.那么可以…

P1078 文化之旅

题面 这题好像是初二时老师讲过的一道题&#xff0c;但是。。我没听&#xff1f;&#xff1f;反正没交过就对了。。 我本来想的是深搜spfa&#xff0c;写到50行实现不了&#xff1f;&#xff1f;果断看tj&#xff0c;floyd&#xff1f;&#xff1f;&#xff1f;&#xff08;黑人…

KMP算法中NEXT数组的作用以及代码实现

在http://blog.csdn.net/u012613903/article/details/79004094中写到了如何手工去求一个NEXT数组&#xff0c;这个在很多考试中可以用来解题。但是在实际的使用中&#xff0c;NEXT数组究竟发挥着什么样的作用&#xff0c;如何用代码实现KMP算法呢&#xff1f; KMP算法是用来确…

最长公共连续子串

给出两个字符串&#xff08;可能包含空格&#xff09;,找出其中最长的公共连续子串,输出其长度。 注意这里是找连续子串。 算法&#xff1a;动态规划。f[i][j]表示第一个字符串前i个字符中与第二个字符串前j个中的最长连续子串长度 那么状态转移为&#xff1a;当s1(i)s2(j)时&a…

求最长回文串-从动态规划到马拉车之路(上)

要解决的问题&#xff1a; 给定一个字符串&#xff0c;要求求出这个字符串中的最长的回文串子串。 例子&#xff1a; cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到&#xff0c;在考虑回文子串的问题时需要考虑奇偶性。因为奇回文关于中…

为什么Python中称__lt__、__gt__等为“富比较”方法

Python中基类object提供了一系列可以用于实现同类对象进行“比较”的方法&#xff0c;可以用于同类对象的不同实例进行比较&#xff0c;包括__lt__、__gt__、__le__、__ge__、__eq__和__ne__六个方法。 那么为什么叫“富比较”(“rich comparison”)方法呢&#xff1f;查了相关…

求最长回文串-从动态规划到马拉车之路(下)

预备知识&#xff1a; &#xff08;1&#xff09;在一个数轴上有两点i和j&#xff08;i<j&#xff09;关于点m对称&#xff0c;那么有 i 2m-j&#xff1b; 证明&#xff1a; 因为 i<j 且 i 和 j 关于 m 对称&#xff0c;那么有 &#xff08;i j&#xff09;/ 2 m 所…

项目管理实战之团队管理 (转自:zhuweisky)

一个系统不仅需要优秀的分析和设计&#xff0c;更需要一个良好的过程将其从蓝图转化为实现。这个过程中最重要的是对团队的管理&#xff0c;也就是人的管理。一个优秀的团队和一个糟糕的团队的效能是天壤之别&#xff0c;她们之间的比例不是1:100或1:1000这样量化的数字能够表示…

python3 内置方法

# -*- coding:utf-8 -*- # Author: Evan Mi import functools # 取绝对值 print(abs:, abs(-1)) # 如果一个可迭代对象的所有元素都为真&#xff0c;返回true ;空也返回真 print(all:, all([1, 0, -3])) # 有一个为真就全为真 print(any:, any([1, 0, -1])) # 变成可打印的字符…

JS 职责链模式

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><script>/*职责链模式 所有对象依次处理请求&#xff0c;1不能处理传给2&#xff0c;2不能处理传给3....*//*场景 打折 100以下不打折&…

python3字符串常用操作

# -*- coding:utf-8 -*- # Author: Evan Miname "my name is alex"print(name.capitalize()) # 首字母大写 print(name.count("a")) # 统计整个字符中a的个数 print(aaaaa.count("a", 0, len(aaaaa)-1)) # 前闭后开 print(name.center(50, &…

通过NGINX location实现一个域名访问多个项目

location ~ \.php$ {   root /home/webroot; //此目录下有多个项目 project1 &#xff0c;project2...   fastcgi_pass $php_upstream;   fastcgi_index index.php;   include fastcgi.conf; } location ~/project1 {   index index.php;   fastcgi_pass $php_u…

python3 set相关操作

# -*- coding:utf-8 -*- # Author: Evan Mi# 创建一个set list_1 [1, 3, 5, 7, 3, 6, 7, 9] list_1 set(list_1) list_2 set([2, 6, 0, 66, 22, 8, 4]) print(list_1, type(list_1))# 交集 print(list_1.intersection(list_2)) print(list_1 & list_2) # 并集 print(lis…

JDK环境变量

下载打开如下链接&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html &#xff0c;进入JDK1.8下载官网&#xff0c;或者直接百度JDK1.8&#xff0c;也可进入下载官网。 进入官网后&#xff0c;按照所给信息下载对应系统版本的J…