sorted set是string類型元素的集合。有序集合成員是惟一的,不能出現重複的數據;有序集合和集合的區別在於每一個元素都會關聯一個double類型的分數,redis能夠經過分數爲集合中的成員進行從小到大的排序,有序集合默認的是按分數從小到大排序的;集合的成員是惟一的,但分數是能夠重複的。有序集合是經過哈希表實現的,最大的成員數達到2^32-1個php
命令 | 命令描述 | 實例 |
---|---|---|
ZADD key score1 member1 [ score2 member2] | 將一個或者多個成員元素及其分數值加入到有序集中;若是有序集合key不存在,則建立該有序集合並執行ZADD操做;若是其中有成員已經存在於key中,則更新該成員的分數值,並經過從新插入該成員以確保該成員在正確的位置;分數值能夠是整數值或雙精度浮點數;執行ZADD操做:若是key不是有序集,則返回一個錯誤;成功則返回成功插入的元素個數,不包括被更新的,已經存在的成員。 | ZADD zset1 3 key1 3.23 key2,返回:2 |
ZRANGE key start stop [WITHSCORES] | 返回有序集中指定區間內的成員,其中成員的位置按分數值遞增(從小到大)排序,若是分數值相同的成員則按字典序進行排列;WITHSCORES不存在則返回不含分數值的成員,存在則返回含有分數值的成員;從頭往尾排:0,1,.....,N,從尾往頭排:-N,......,-1。 | ZRANGE zset1 0 -1,返回:"key2","key3","key4";ZRANGE zset1 0 -1 withscores,返回:"key2","2","key3","3.23","key4","4.23" |
ZREVRANGE key start stop [WITHSCORES] | 和ZRANGE 命令相似,區別在於排序方式按分數遞減,相同分數按字典序的逆序排列 | 見ZRANGE 命令的實例 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 返回有序集合中指定分數區間內的成員,按成員的分數值進行遞增(從小到大)排序,相同分數值則按字典序進行排列;默認狀況下是分數區間取值是閉區間,能夠在min,max前加"("表示開區間 | ZRANGEBYSCORE zset1 2 4,返回:key2 key1 key4 |
ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集合key中指定分數區間的全部成員,並按照分數值從大到小的順序排列,具備相同分數值的成員按照字典序逆序排列,其餘方面和ZRANGEBYSCORE命令相同 | ZREVRANGEBYSCORE zset1 4 2 withscores,返回:"key4": "4","key1":"3.546","key2": "3.23" |
ZRANGEBYLEX key min max [LIMIT offset count] | 經過字典序返回指定區間內的成員 | ZRANGEBYLEX myzset - [l,返回:key2 key1 key4,key3 |
ZCARD key | 用於計算有序集key中成員的個數,key不存在時返回0 | ZCARD zset1,返回:2 |
ZCOUNT key min max | 返回有序集key指定分數區間[min,max]內的成員的數量 | ZCOUNT zset1 2 4,返回:3 |
ZREM key member1 [member2] | 移除有序集key中指定的一個或多個成員,成功則返回移除的成員的個數,成員不存在則忽略不計數;key存在但不是有序集返回一個錯誤。 | ZREM zset1 key1 key5,返回:1 |
ZREMRANGEBYLEX key min max | 移除有序集合key中給定的字典區間中的全部成員;返回被成功移除的成員的個數,不包括被忽略的成員,redis-server>2.8.9以上才能使用; | ZREMRANGEBYLEX zset1 [c [l,返回:4 |
ZREMRANGEBYRANK key start stop | 移除有序集合key中給定的排名區間的全部的成員,返回被移除的成員的個數 | ZREMRANGEBYRANK zset1 1 2,返回:2 |
ZREMRANGEBYSCORE key min max | 移除有序集key中給定分數區間內的全部成員,返回成功移除成員的個數 | ZREMRANGEBYSCORE zset2 0 5,返回:1 |
ZSCORE key member | 取得有序集key中成員member的分數值,以字符串的形式表示;若是member不在有序集中或key不存在,則返回nil。 | ZSCORE zset1 key2,返回:‘3.23’ |
ZINCRBY key increment member | 對有序集合key中的指定成員member添加增量值increment;increment能夠是整型也能夠是雙精度浮點型數值,increment能夠是負數(減);若key不存在或member不是能夠的成員是,則該命令等同於 ZADD key increment member;該命令返回member新的分數值 | ZINCRBY zset1 2 key4,返回:6 |
ZLEXCOUNT key min max | 返回有序集合key中指定字典序區間中成員的數量,redis-server>2.8.9以上才能使用,ZLEXCOUNT key - +:獲取全部的成員數量 | ZLEXCOUNT myzset [a [l,返回:4 |
ZINTERSTORE destination numkeys key [key ...] | 計算給定的有序集合的交集並存儲到目標有序集合destination上,給定的有序集合key必須指定其個數numkeys;默認狀況下,結果集中某個成員的分數值是全部給定的有序集該成員的分數值之和;返回目標結果集中成員的個數 | ZINTERSTORE zset3 2 zset1 zset2,返回:4 |
ZUNIONSTORE destination numkeys key [key ...] | 計算給定的一個或多個有序集的並集並將結果集存儲到目標集合destination中;給定的有序集必須指定其個數numkeys;默認狀況下,結果集中某個成員的分數值等於給定的有序集該成員的分數值之和;返回目標結果集中成員的個數 | ZUNIONSTORE zset3 2 zset1 zset2,返回值:4 |
ZRANK key member | 返回有序集合中指定成員member的排名(從0開始);有序集成員按分數值從小到大排列; | ZRANK zset1 key4,返回:2 |
ZREVRANK key member | 返回有序集合中指定成員member的排名(從0開始),有序集成員按分數值從大到小排列;和ZRANK相反 | ZREVRANK zset1 key4,返回:1 |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 用迭代器cursor遍歷有序集合key,並用pattern匹配特定的元素,count指定返回成員的個數;返回的每一個元素都是一個有序集合元素 |
php $ret = $redis->zAdd($key1,3,'k1',5,'k2'); /* 2 */
php $ret = $redis->zRange($key1,0,-1); /* array(2) { [0]=> string(2) "k1" [1]=> string(2) "k2" } */ $res = $redis->zRange($key1,0,-1,true); /* array(2) { ["k1"]=> string(1) "3" ["k2"]=> string(1) "5" } */ $ret1 = $redis->zRevRange($key1,0,-1);/* array(2) { [0]=> string(2) "k2" [1]=> string(2) "k1" } */ $res1 = $redis->zRevRange($key1,0,-1,true);/* array(2) { ["k2"]=> string(1) "5" ["k1"]=> string(1) "3" } */
php $ret = $redis->zRangeByScore($key1,2,6); /* array(2) { [0]=> string(2) "k1" [1]=> string(2) "k2" } */ $res = $redis->zRangeByScore($key1,2,6,array('withscores' => true)); /* array(2) { ["k1"]=> string(1) "3" ["k2"]=> string(1) "5" } */ $rea = $redis->zRangeByScore($key1,2,6,array('withscores' => true,'limit'=>array(1,1))); /* array(1) { ["k2"]=> string(1) "5" } */
php $ret = $redis->zRangeByLex($key1,'[a','[l'); /* array(2) { [0]=> string(2) "k1" [1]=> string(2) "k2" } */
php $ret = $redis->zCard($key1); /* 2 */ $res = $redis->zSize($key1); /* 2 */
php $ret = $redis->zCount($key1,0,4); /* 1 */ $res = $redis->zCount($key1,-2,0); /* 0 */
php $ret = $redis->zRem($key1,'k1'); /* 1 */ $res = $redis->zDelete($key1,'k2'); /* 1 */
php $ret = $redis->zRemRangeByScore($key1,1,3);/* 1 */ $res = $redis->zDeleteRangeByScore($key1,6,12); /* 2 */
php $ret = $redis->zRemRangeByRank($key1,1,2); /* 2 */ $res = $redis->zDeleteRangeByRank($key1,0,1); /* 2 */
php $ret = $redis->zScore($key1,'k2'); /* float(4) */
php $ret = $redis->zIncrBy($key1,3,'k2'); /* float(7) */
php $redis->zAdd($key2,3, 'k2' , 5 , 'k4'); $ret = $redis->zInter($key3,array($key1,$key2)); /* int(2) */ $res = $redis->zRange($key3,0, -1, true); /* array(2) { ["k4"]=> string(1) "9" ["k2"]=> string(2) "10" } */
php $ret = $redis->zUnion($key3,array($key1,$key2));/* int(5) */ $res = $redis->zRange($key3,0, -1, true);/* array(5) { ["k3"]=> string(1) "6" ["k1"]=> string(1) "8" ["k5"]=> string(1) "8" ["k4"]=> string(1) "9" ["k2"]=> string(2) "10" } */
php $ret = $redis->zRank($key1,'k2');/* int(2) */