redisにおけるsorted set(秩序化集合)操作(5)

4397 ワード

sorted setと前の文章のsetの違いは、それは自分でソートすることですが、javaで挿入された順序でソートしたり文字列でソートしたりするのではなく、追加するときに自分で点数を追加する必要があります.setなので重複は許されませんが、点数は重複することができます.mapと理解できます.setの値はmapのkeyで、点数はmapのvalueです.ランキングは点数によって並べ替えられていますが、もちろん正の順序でも逆の順序でもいいので、ランキングにふさわしいと思います
コマンドの例
1.ZADD/ZCARD/ZCOUNT/ZREM/ZINCRBY/ZSCORE/ZRANGE/ZRANGE/ZRANK:(すべての数量の増加/統計/指定点数間の数量の統計/メンバーの削除/指定点数の取得/指定点数間のメンバーの問合せランキング)
127.0.0.1:6379> del myset //    
(integer) 1
127.0.0.1:6379> zadd myset 1 one //    1   1   
(integer) 1
127.0.0.1:6379> zadd myset 2 two 3 three //         2 3     
(integer) 2
127.0.0.1:6379> zrange myset 0 -1 //  myset     
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrange myset 0 -1 withscores /WITHSCORES                    
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zrank myset one //    one Sorted-Set       。0       
(integer) 0
127.0.0.1:6379> zrank myset four //  four    ,    nil
(nil)
127.0.0.1:6379> zcard myset //  myzset       
(integer) 3
127.0.0.1:6379> zcount myset 1 2 //   myzset   Sorted-Set ,       1 <= score <= 2      
(integer) 2
127.0.0.1:6379> zrem myset one two //    one two,           
(integer) 2
127.0.0.1:6379> zcard myset //        
(integer) 1
127.0.0.1:6379> zscore myset three //    three   。         
"3"
127.0.0.1:6379> zscore myset two //    two     ,       nil
(nil)
//       ,  ,           0,   one     2,            
127.0.0.1:6379> zincrby myset 2 one 
"2"
127.0.0.1:6379> zincrby myset -1 one   // 1,    ,     ,            
"1"
127.0.0.1:6379> zrange myset 0 -1 withscores  
1) "one"
2) "1"
3) "three"
4) "3"
127.0.0.1:6379> zadd myset 3 four    //        3   
(integer) 1
127.0.0.1:6379> zrange myset 0 -1 withscores   //      ,                     
1) "one"
2) "1"
3) "four"
4) "3"
5) "three"
6) "3"
127.0.0.1:6379> zadd myset 3 five  //        3 ,      
(integer) 1
127.0.0.1:6379> zrange myset 0 -1 withscores
1) "one"
2) "1"
3) "five"
4) "3"
5) "four"
6) "3"
7) "three"
8) "3"

2.ZRANGGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE(スコアによるメンバーの照会/ランキングによる削除/スコアによる削除)
127.0.0.1:6379> del myset
(integer) 1
127.0.0.1:6379> zadd myset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrangebyscore myset 1 2 //         1 <= score <= 2   
1) "one"
2) "two"
127.0.0.1:6379> zrangebyscore myset (1 2 //          1 < score <= 2   
1) "two"
//-inf       ,+inf        ,limit                
//2       (0-based)  2     ,   3   ,  sql    limit,        
127.0.0.1:6379> zrangebyscore myset -inf +inf limit 2 3  //
1) "three"
2) "four"
127.0.0.1:6379> zremrangebyscore myset 1 2 //         1 <= score <= 2   ,          
(integer) 2
127.0.0.1:6379> zrange myset 0 -1 //             
1) "three"
2) "four"
127.0.0.1:6379> zremrangebyrank myset 0 1  //           0 <= rank <= 1   
(integer) 2
127.0.0.1:6379> zcard myset //             
(integer) 0

ここで説明すると、zrangebyscoreの>=番号の問題については、<=、出現は許されない>=のみが許され、そうでなければエラー:(error)ERR min or max is not a float、すなわち(1 2)または[12]のみが許され、(1 2)または[12]は許されない.そうでなければ3.ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK:(逆シーケンスメンバー/逆シーケンスはスコア検索/逆シーケンスに基づいてランキングに基づいて検索される)
127.0.0.1:6379> del myset
(integer) 0
127.0.0.1:6379> zadd myset 1 one 2 two 3 three 4 four
(integer) 4
 //                        ,withscores       ,   
127.0.0.1:6379> zrevrange myset 0 -1 withscores 
1) "four"
2) "4"
3) "three"
4) "3"
5) "two"
6) "2"
7) "one"
8) "1"
127.0.0.1:6379> zrevrange myset 1 3 //          ,      0  four,1 three,     
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrank myset four  //          ,  four    0
(integer) 0
//          3 >= score >= 0   ,         ,        
127.0.0.1:6379> zrevrangebyscore myset 3 0
1) "three"
2) "two"
3) "one"
//     limit  ,      zrangebyscore     ,                    。
127.0.0.1:6379> zrevrangebyscore myset 4 0 limit 1 2
1) "three"
2) "two"