redis sort 对应的javaapi

redis sort 对应的javaapi

最近需要用到redis 的排序方法,在网上看到的基本上都是redis 客户端的命令,没有对应成相应的java api,今天写了两个单元测试,关于redis的list结合hash的排序和set结合String的排序,希望家多多提意见,有其他更好的redis 排序 请指导。谢谢。


A:set结合String的排序

代码:


1:

        jedis.sadd("tom:friend:list", "123");  //tom的好友列表
        jedis.sadd("tom:friend:list", "456");
        jedis.sadd("tom:friend:list", "789");
        jedis.sadd("tom:friend:list", "101");
        
        jedis.set("uid:sort:123", "1000");  //好友对应的成绩
        jedis.set("uid:sort:456", "6000");
        jedis.set("uid:sort:789", "100");
        jedis.set("uid:sort:101", "5999");
        
        jedis.set("uid:123", "{'uid':123,'name':'lucy'}"); //好友的详细信息
        jedis.set("uid:456", "{'uid':456,'name':'jack'}");
        jedis.set("uid:789", "{'uid':789,'name':'marry'}");
        jedis.set("uid:101", "{'uid':101,'name':'icej'}");
        
         SortingParams sortingParameters = new SortingParams();
         
//          sortingParameters.desc();
//          sortingParameters.limit(0, 2);
          sortingParameters.get("uid:*");
      //   sortingParameters.get("uid:sort:*");
          sortingParameters.by("uid:sort:*");
 //对应的redis 命令是./redis-cli sort tom:friend:list by uid:sort:* get uid:*       
        List<String> result=jedis.sort("tom:friend:list", sortingParameters);
        for(String item:result){
            System.out.println("item..."+item);
        }


打印输出为:

item...{'uid':789,'name':'marry'}
item...{'uid':123,'name':'lucy'}
item...{'uid':101,'name':'icej'}
item...{'uid':456,'name':'jack'}



2:


  jedis.sadd("tom:friend:list", "123");  //tom的好友列表
        jedis.sadd("tom:friend:list", "456");
        jedis.sadd("tom:friend:list", "789");
        jedis.sadd("tom:friend:list", "101");
        
        jedis.set("uid:sort:123", "1000");  //好友对应的成绩
        jedis.set("uid:sort:456", "6000");
        jedis.set("uid:sort:789", "100");
        jedis.set("uid:sort:101", "5999");
        
        jedis.set("uid:123", "{'uid':123,'name':'lucy'}"); //好友的详细信息
        jedis.set("uid:456", "{'uid':456,'name':'jack'}");
        jedis.set("uid:789", "{'uid':789,'name':'marry'}");
        jedis.set("uid:101", "{'uid':101,'name':'icej'}");
        
         SortingParams sortingParameters = new SortingParams();
         
//          sortingParameters.desc();
//          sortingParameters.limit(0, 2);
          sortingParameters.get("uid:*");
         sortingParameters.get("uid:sort:*");
          sortingParameters.by("uid:sort:*");
 //对应的redis 命令是./redis-cli sort tom:friend:list by uid:sort:* get uid:*  get uid:sort:*      
        List<String> result=jedis.sort("tom:friend:list", sortingParameters);
        for(String item:result){
            System.out.println("item..."+item);
        }


打印输出为:

item...{'uid':789,'name':'marry'}
item...100
item...{'uid':123,'name':'lucy'}
item...1000
item...{'uid':101,'name':'icej'}
item...5999
item...{'uid':456,'name':'jack'}
item...6000

B:list结合hash的排序


        jedis.hset("userrr1", "name", "hanjie");
        jedis.hset("userrr11", "name", "hanjie");
        jedis.hset("userrr12", "name", "86");
        jedis.hset("userrr13", "name", "x86");
        jedis.lpush("ml", "12");
        jedis.lpush("ml", "11");
        jedis.lpush("ml", "23");
        jedis.lpush("ml", "13");
    
         SortingParams sortingParameters = new SortingParams();
         sortingParameters.get("userrr*->name");
        List<String> result=jedis.sort("ml", sortingParameters);
        for(String item:result){
            System.out.println("item...."+item);
        }


对应的redis客户端命令是:sort ml get user*->name

具体的讲解我也不多说了,大家可以自己对比,找下规律。

返回:
item....hanjie
item....86
item....x86
item....null    //userrr23在hash中不存在,所以此处为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值