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:(すべての数量の増加/統計/指定点数間の数量の統計/メンバーの削除/指定点数の取得/指定点数間のメンバーの問合せランキング)
2.ZRANGGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE(スコアによるメンバーの照会/ランキングによる削除/スコアによる削除)
ここで説明すると、zrangebyscoreの>=番号の問題については、<=、出現は許されない>=のみが許され、そうでなければエラー:(error)ERR min or max is not a float、すなわち(1 2)または[12]のみが許され、(1 2)または[12]は許されない.そうでなければ3.ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK:(逆シーケンスメンバー/逆シーケンスはスコア検索/逆シーケンスに基づいてランキングに基づいて検索される)
コマンドの例
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"