• 使用Jedis操作Redis-使用Java语言在客户端操作---对Sorted-Sets的操作


      1     //对Sorted-Sets操作
      2     /**
      3      * Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。    
      4      *             它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。
      5      *             然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。
      6      *  在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。
      7      *          由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。
      8      * @throws Exception
      9      */
     10     @Test
     11     public void testSorted_Sets() throws Exception {
     12         jedis.flushAll();
     13         
     14         //添加一个分数为1的成员
     15         jedis.zadd("myzset", 1, "one");
     16         
     17         Map<String,Double> map = new LinkedHashMap<String,Double>();
     18         map.put("two", (double) 2);
     19         map.put("three", (double) 3);
     20         //添加两个分数分别是2和3的两个成员。
     21         jedis.zadd("myzset", map);//这个单独测一下
     22         
     23         //0表示第一个成员,-1表示最后一个成员。返回的结果中包含每个成员
     24         Set<String> zrange = jedis.zrange("myzset", 0, -1);
     25         System.out.println("zrange="+zrange);//zrange=[one, two, three]
     26         
     27         
     28         
     29         //获取成员one在Sorted-Set中的位置索引值。0表示第一个位置
     30         Long zrank = jedis.zrank("myzset", "one");
     31         System.out.println("zrank = "+zrank);//zrank = 0
     32         
     33         //成员four并不存在,因此返回null
     34         System.out.println(jedis.zrank("myzset", "four"));//null
     35         
     36         //#返回与myzset关联的Sorted-Set中,分数满足表达式1 <= score <= 2的成员的数量。
     37         Long zcount = jedis.zcount("myzset", 1, 2);
     38         System.out.println("zcount="+zcount);//zcount=2
     39         
     40         //获取myzset键中成员的数量。    
     41         System.out.println(jedis.zcard("myzset"));//3
     42         
     43         //删除成员one和two,返回实际删除成员的数量。
     44         Long zrem = jedis.zrem("myzset", "one","two");
     45         System.out.println("zrem="+zrem);//zrem=2
     46         
     47         //查看是否删除成功。 获取键中成员的数量
     48         System.out.println(jedis.zcard("myzset"));//1
     49         
     50         //获取成员three的分数。返回值是字符串形式。
     51         Double zscore = jedis.zscore("myzset", "three");
     52         System.out.println("zscore="+zscore);//zscore=3.0
     53         
     54         //由于成员two已经被删除,所以该命令返回null
     55         System.out.println(jedis.zscore("myzset", "two"));//null
     56         
     57         //将成员three的分数增加2,并返回该成员更新后的分数。
     58         Double zincrby = jedis.zincrby("myzset", 2, "three");
     59         System.out.println("zincrby="+zincrby);//zincrby=5.0
     60         
     61         //将成员three的分数增加-1,并返回该成员更新后的分数。
     62         System.out.println(jedis.zincrby("myzset", -1, "three"));//4.0
     63         
     64         //====================》》》》》》
     65         jedis.del("myzset");
     66         
     67         Map<String,Double> map3 = new LinkedHashMap<String,Double>();
     68         map3.put("one", 1.0);
     69         map3.put("two", 2.0);
     70         map3.put("three", 3.0);
     71         map3.put("four", 4.0);
     72         //一次添加多个
     73         jedis.zadd("myzset",map3);
     74         
     75         //获取分数满足表达式1 <= score <= 2的成员。
     76         Set<String> zrangeByScore = jedis.zrangeByScore("myzset", 1, 2);
     77         System.out.println("zrangeByScore= "+zrangeByScore);////zrangeByScore= [one, two]
     78         
     79         
     80         
     81         //删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。
     82         Long zremrangeByScore = jedis.zremrangeByScore("myzset", 1, 2);
     83         System.out.println("zremrangeByScore="+zremrangeByScore);//zremrangeByScore=2
     84         
     85         //看出一下上面的删除是否成功。
     86         System.out.println(jedis.zrange("myzset", 0, -1));//[three, four]
     87         
     88         
     89         //删除位置索引满足表达式0 <= rank <= 1的成员。返回实际删除的数量
     90         Long zremrangeByRank = jedis.zremrangeByRank("myzset", 0, 1);
     91         System.out.println("zremrangeByRank="+zremrangeByRank);//zremrangeByRank=2
     92         
     93         //查看上一条命令是否删除成功。
     94         Long zcard = jedis.zcard("myzset");
     95         System.out.println("zcard = "+zcard);//zcard = 0
     96         
     97         //======================>>>>>>>>>>>>>>>>>
     98         
     99         jedis.del("myzset");
    100         Map<String,Double> map2 = new LinkedHashMap<String,Double>();
    101         map2.put("one", 1.0);
    102         map2.put("two", 2.0);
    103         map2.put("three", 3.0);
    104         map2.put("four", 4.0);
    105         //一次添加多个
    106         jedis.zadd("myzset",map2);
    107         
    108         //以位置索引从高到低的方式获取并返回此区间内的成员。
    109         Set<String> zrevrange = jedis.zrevrange("myzset", 0, -1);
    110         System.out.println("zrevrange="+zrevrange);//zrevrange=[four, three, two, one]
    111         
    112         Set<String> zrevrange2 = jedis.zrevrange("myzset", 1, 3);
    113         System.out.println("zrevrange2="+zrevrange2);//zrevrange2=[three, two, one]
    114         
    115         //由于是从高到低的排序,所以one的位置是3。
    116         System.out.println(jedis.zrevrank("myzset", "one"));//3
    117         
    118         //由于是从高到低的排序,所以four的位置是0。
    119         System.out.println(jedis.zrevrank("myzset", "four"));//0
    120         
    121         //获取分数满足表达式3 >= score >= 0的成员,并以相反的顺序输出,即从高到底的顺序。
    122         System.out.println(jedis.zrevrangeByScore("myzset", 3, 0));//[three, two, one]
    123         
    124         System.out.println("数据:="+jedis.zrange("myzset", 0, -1));//数据:=[one, two, three, four]
    125         
    126         
    127         /**
    128          * zrangeByScoreWithScores(String key, double min, double max, int offset, int count)
    129          *     key:键
    130          *  min:最小分值
    131          *  max:最大分值
    132          *  offset:偏移量,也就是从哪个位置开始。
    133          *  count:元素个数
    134          *  
    135          *  返回的元素用ASCII码表示的,该元素的值用double类型数据表示
    136          */
    137         System.out.println(jedis.zrangeByScoreWithScores("myzset", 2, 3, 0, 2));//[[[116, 119, 111],2.0], [[116, 104, 114, 101, 101],3.0]]
    138 
    139     }
  • 相关阅读:
    微信公众号,点击菜单,跳转到小程序
    tomcat启动时启动窗口出现乱码的解决方案
    SpringBoot实现HandlerInterceptor拦截器的接口没有需要重写的方法也不报错是怎么回事
    ZooKeeper下载安装(Windows版本)
    Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could
    mysql连接出现java.sql.sql exception:服务器时区值'''_''''无法识别或表示多个时区
    angular执行ng build进行压缩。
    angular新建项目时没有新建路由时,后来新建路由
    关于ng-zorro-antd阿里的UI框架
    angular 项目创建打包过程
  • 原文地址:https://www.cnblogs.com/lixianyuan-org/p/9516123.html
Copyright © 2020-2023  润新知