• redis操作ZSet


    主方法

    public static void main(String[] args) {
            Jedis jedis = new Jedis("localhost", 6379);
            //测试jedis连接
            //System.out.println(jedis.ping());
         //操作ZSet
            testZSort(jedis);
        }

    具体实现

     /***
        *@author zh
        *@Date 2020/12/31
        *@MethodNotes  测试ZSort
        **/
        public static void testZSort(Jedis jedis){
            /***
            *@author zh
            *@Date 2020/12/31
            *@MethodNotes  首先创建一个map集合,因为是看的api所以这个东西有一点点坑,它比Set多一个字段score用于排序等操作
             * 如果要创建这个ZSet 有一个key是必须的,然后就需要一个map集合,但是这个map集合的泛型是指定的<String,Double>
             * 所以第二个值指定为Double类型,且只能是Double类型
             * 不能自己修改,之前我写的是一个<String,String>然后就报错了,看了菜鸟里面的介绍和源码原来因为要排序的原因
             * 这个在redis的操作命令为: zrange key 0 -1 withscores
             * 如果命令没有加withscores那么只会显示值(这个值的显示是根据score的数字大小进行排序后的顺序显示的),如果加上就会显示score
             * 源码里面关于zadd方法重载了四种
             * Long zadd(String var1, double var2, String var4);
             * 这一种主要是添加一个key,并且给这个key一个编号(我目前是这么理解的),第三个是value
             * jedis.zadd("user",1D,"aaa");
             *
             * Long zadd(String var1, double var2, String var4, ZAddParams var5);
             * 第二种实现,主要是多了一个ZaddParams,多次翻看也没弄明白这个参数到底是干嘛用的,如果有知道的欢迎交流
             * jedis.zadd("user",1D,"aaa", ZAddParams.zAddParams().nx());
             *
             * Long zadd(String var1, Map<String, Double> var2);
             * 第三种实现就是把参数放进一个map集合里面,如上所述,这个map的泛型只能是String,Map
             *  测试代码
             *         HashMap<String, Double> map = new HashMap<>();
             *         map.put("name",1D);
             *         map.put("age",3D);
             *         map.put("qq",2D);
             *         jedis.zadd("user",map);
             *
             * Long zadd(String var1, Map<String, Double> var2, ZAddParams var3);
             * 至于第四种实现由于实在没搞懂ZAddParams的作用,直接放弃了不过两种也够使用了
             *
             * 获取ZSet里面的所有值
             * jedis.zrange("user", 0, -1);
             *
             * 获取ZSet里面所有的值,包括score
             * jedis.zrangeWithScores("user", 0, -1);
             *
             * 根据score在ZSet集合中获取区间的值  min=1,max=3
             * jedis.zrangeByScore("user", 1, 3);
             *
             * 根据score在ZSet集合中获取区间的值,包括score
             * jedis.zrangeByScoreWithScores("user", 1, 3);
             * 在java中凡是加了withScores的返回数值都有些奇怪,不懂,但是在redis中
             * 使用 zrangebyscore key min max withscores  返回的就是正常的数据+score
             *
             * 返回集合中value=name 的score
             * jedis.zscore("user", "name");
             *
             * 获取集合中value=name 的socre排名  score下标为0
             * jedis.zrank("user", "name");
             *
             * 删除集合中value=name的元素
             * jedis.zrem("user","name");
             *
             * 获取ZSet集合中的元素个数
             * jedis.zcard("user");
             *
             * 获取score在区间的个数  min=0,max=3  最大值可以超过集合长度
             * 类似于另一个获取的元素个数,如果有一条数据没有score的话,不过这个集合中应该没有无score的数据吧
             * jedis.zcount("user", 0, 3);
             *
             *
             * 把这个value=qq的元素的score+=5    目前也不知道有什么用处,唯一明显的是他通过score的+=会让他的排名下降
             * jedis.zincrby("user",5,"qq");
            **/
    
    
        }
  • 相关阅读:
    html5-移动端布局模板
    html5-figure和figcaption元素
    html5-hgroup和address元素
    html5-新元素新布局模板-完善中
    数据库操作符
    数据库操作,复制表
    数据库基本sql语句
    反射+工厂模型+Properties
    java :动态代理
    java 反射
  • 原文地址:https://www.cnblogs.com/zhboke/p/14218136.html
Copyright © 2020-2023  润新知