redis sorted set命令,php操做Redis sorted set函數介紹

sorted set類型介紹

sorted set是string類型元素的集合。有序集合成員是惟一的,不能出現重複的數據;有序集合和集合的區別在於每一個元素都會關聯一個double類型的分數,redis能夠經過分數爲集合中的成員進行從小到大的排序,有序集合默認的是按分數從小到大排序的;集合的成員是惟一的,但分數是能夠重複的。有序集合是經過哈希表實現的,最大的成員數達到2^32-1個php

Sorted Set原生命令

命令 命令描述 實例
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操做redis Sorted Set的函數

  • zAdd(key,score1,value1,[score2,value2, ....])函數
    * 說明:將一個或多個value成員加入到有序集合key中,若value已經存在,則更新value的分數值;
    * 參數:key(有序集合名稱),value(將要插入有序集合key的成員),score(成員value對應的分數值)
    * 返回值:插入成功返回插入成員的個數,失敗則返回0
    * php $ret = $redis->zAdd($key1,3,'k1',5,'k2'); /* 2 */
  • zRange(key,start,stop,[withscores]),zRevRange(key,start,stop,[withscores])函數
    * 說明:取出有序集key中給定排名區間[start,stop]的全部成員並寫入數組中;withscores表示是否取出成員及其分數值,默認值爲false(不取出成員的分數值);成員排名從前日後(0,1,2...),從後往前(...-2,-1);zRange和zRevRange二者相似,區別在於:zRange()返回的數組按分數值從小到大排列,zRevRange()返回的數組按分數值從大到小排列
    * 參數:key(有序集合名稱),start(排名區間的左半邊),stop(排名區間的右半邊),withscores(可選項:默認爲false)
    * 返回:withscores爲true成功則返回給定區間內成員及其分數值組成的關聯數組,withscores爲false成功則返回給定區間內的全部成員組成的索引數組,失敗則返回false
    * 注意: redis的版本>=3.2才能使用count參數
    * 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" } */
  • zRangeByScore(key,start,stop,options), zRevRangeByScore(key)函數
    * 說明:取出給定有序集合key中指定分數區間內的全部成員並組成數組返回;zRangeByScore()返回的數組按分數值從小到大排序,zRevRangeByScore()則相反;
    * 參數:key(有序集合名稱),start(指定分數值區間的左半邊),stop(指定分數值區間的右半邊),options(options包含是兩個可選項withscores的數組,limit;withscores是bool型數值,表示返回的數組中是否包含成員分數值,true包含,false不包含;limit是數組形式,limit=>array($offset, $count), $offset表示取值的偏移量, $count限制返回成員的個數 )
    * 返回:成功則返回取出成員組成的數組,失敗則返回false
    * 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" } */
  • zRangeByLex(key,min,max,[offset],[limit])函數
    * 說明:取出給定的有序集合key中指定字典序區間的全部成員;offset表示偏移量(從偏移量處開始取值),limit限制返回的成員個數;「(」表示開區間,「[」表示閉區間;該方法必須是3個或5個參數
    * 參數:key(有序集合名稱),min(字典序區間的左半邊),max(字典序區間的右半邊 ),offset(可選參數,偏移量),limit(可選參數,限制返回的成員的個數)
    * 返回:成功則返回取出成員組成的數組,失敗則返回false
    * 注意:redis-server > 2.8.9才能使用該方法
    * php $ret = $redis->zRangeByLex($key1,'[a','[l'); /* array(2) { [0]=> string(2) "k1" [1]=> string(2) "k2" } */
  • zCard(key), zSize(key)函數
    * 說明:獲取有序集合key的大小(成員的個數),兩個函數功能是同樣的
    * 參數:key(有序集合名稱)
    * 返回:執行成功返回有序集合的大小,失敗則返回false
    * php $ret = $redis->zCard($key1); /* 2 */ $res = $redis->zSize($key1); /* 2 */
  • zCount(key,start,stop)函數
    * 說明:獲取有序集合key中在給定分數值區間內的所有成員的個數
    * 參數: key(有序集合的名稱),start(分數區間的左半邊,能夠爲負值),stop(分數值區間的右半邊,能夠爲負值)
    * 返回:成功返回給定分數值區間內的成員的個數,失敗返回false
    * php $ret = $redis->zCount($key1,0,4); /* 1 */ $res = $redis->zCount($key1,-2,0); /* 0 */
  • zRem(key,member), zDelete(key,member)函數
    * 說明:從有序集key中刪除成員member,兩個函數功能是同樣的
    * 參數:key(有序集合的名稱),member(將要刪除的成員)
    * 返回值:執行成功返回1,失敗返回0
    * php $ret = $redis->zRem($key1,'k1'); /* 1 */ $res = $redis->zDelete($key1,'k2'); /* 1 */
  • zRemRangeByScore(key,start,stop), zDeleteRangeByScore(key,start,stop)函數
    * 說明: 刪除有序集合key中指定分數值區間內的全部成員,二者的功能是同樣的
    * 參數: key(有序集合的名稱),start(分數值區間的左半邊,能夠是負值),stop(分數值區間的右半邊,能夠是負值)
    * 返回:成功則返回刪除成員的個數,失敗則返回false
    * php $ret = $redis->zRemRangeByScore($key1,1,3);/* 1 */ $res = $redis->zDeleteRangeByScore($key1,6,12); /* 2 */
  • zRemRangeByRank(key,start,stop), zDeleteRangeByRank(key,start,stop)函數
    * 說明:移除有序集合key中指定排名區間內的全部成員,二者的功能是同樣的;排名從0開始依次增長1
    * 參數:key(有序集合的名稱),start(排名區間的左半邊,能夠爲負值),stop(排名區間的右半邊,能夠爲負值)
    * 返回:成功返回被成功移除的成員的個數,失敗則返回false
    * php $ret = $redis->zRemRangeByRank($key1,1,2); /* 2 */ $res = $redis->zDeleteRangeByRank($key1,0,1); /* 2 */
  • zScore(key,member)函數
    * 說明:獲取給定有序集合key中成員member的分數值
    * 參數:key(有序集合名稱),member(指定的成員)
    * 返回:執行成功返回member的分數值;失敗則返回false
    * php $ret = $redis->zScore($key1,'k2'); /* float(4) */
  • zIncrBy(key,value,member)函數
    * 說明:給給定的有序集合key中的成員member的分數值加上一個增量value,若是member不存在,則給key新增一個成員member並複製value
    * 參數:key(有序集合名稱),value(增量值),member(指定的成員)
    * 返回:返回member的新值(浮點數)
    * php $ret = $redis->zIncrBy($key1,3,'k2'); /* float(7) */
  • zInter(dstKey,srcKeyArr,,weightsArr,aggregateFunction)函數
    * 說明:獲取給定的有序集組成的數組srcKeyArr中成員的交集,並將返回值存儲到目標有序集合dstKey中;
    * 參數:dstKey(目標有序集合),srcKeyArr(給定的有序集合組成的數組),weightsArr(可選參數),aggregateFunction(可選參數)
    * 返回:成功返回目標結果集dstKey的大小,失敗則返回false
    * 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" } */
  • zUnion(dstKey,srcKeyArr,weightsArr,aggregateFunction)函數
    * 說明:獲取給定的有序集組成的數組srcKeyArr中成員的並集,並將返回值存儲到dstKey集合中;
    * 參數:dstKey(目標有序集合),srcKeyArr(給定的有序集合組成的數組),weightsArr(可選參數),aggregateFunction(可選參數)
    * 返回:成功返回目標結果集dstKey的大小,失敗則返回false
    * 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" } */
  • zRank(key,member), zRevRank(key,member)函數
    * 說明:獲取給定有序集合key中指定成員member的排名;zRank最小的排名爲0,zRevRank最大的排名爲0
    * 參數:key(有序集合名稱),member(給定的成員)
    * 返回:成功返回該member的排名,失敗返回false
    * php $ret = $redis->zRank($key1,'k2');/* int(2) */
  • zScan(key,iterator,pattern,count)函數 * 說明:用迭代器iterator遍歷指定模式pattern的有序集合key,並限制返回的成員個數count * 參數:key(有序集合的名稱),iterator(迭代器),pattern(遍歷時的匹配條件),count(指望返回成員的數量) * 返回:執行成功返回一個數組,失敗則返回false
相關文章
相關標籤/搜索