1. 程式人生 > >redis 有序集合(zset)函式

redis 有序集合(zset)函式

redis 有序集合(zset)函式

 

zAdd 命令/方法/函式
Adds the specified member with a given score to the sorted set stored at key.

增加一個或多個元素,如果該元素已經存在,更新它的socre值

雖然有序集合有序,但它也是集合,不能重複元素,新增重複元素只會

更新原有元素的score值



Parameters

key

score : double

value: string



Return value

Long 1 if the element is added. 0
otherwise. Example $redis->zAdd('key', 1, 'val1'); $redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 5, 'val5'); $redis->zRange('key', 0, -1); // array(val0, val1, val5)

 

zRange 命令/方法/函式
Returns a range of elements from the ordered set stored at the specified key, with values in
the range [start, end]. start and stop are interpreted as zero-based indices: 0 the first element, 1 the second ... -1 the last element, -2 the penultimate ... 取得特定範圍內的排序元素,0代表第一個元素,1代表第二個以此類推。-1代表最後一個,-2代表倒數第二個... Parameters key start: long end: long withscores: bool = false Return value Array containing the values
in specified range. Example $redis->zAdd('key1', 0, 'val0'); $redis->zAdd('key1', 2, 'val2'); $redis->zAdd('key1', 10, 'val10'); $redis->zRange('key1', 0, -1); /* array('val0', 'val2', 'val10') */ // with scores $redis->zRange('key1', 0, -1, true); /* array('val0' => 0, 'val2' => 2, 'val10' => 10) */
zDelete 命令/方法/函式
Deletes a specified member from the ordered set.

從有序集合中刪除指定的成員。



Parameters

key

member



Return value

LONG 1 on success, 0 on failure.



Example

$redis->zAdd('key', 0, 'val0');

$redis->zAdd('key', 2, 'val2');

$redis->zAdd('key', 10, 'val10');

$redis->zDelete('key', 'val2');

$redis->zRange('key', 0, -1); /* array('val0', 'val10') */
zRevRange 命令/方法/函式
Returns the elements of the sorted set stored at the specified key in the range [start, end] in reverse order. start and stop are interpretated as zero-based indices: 0 the first element, 1 the second ... -1 the last element, -2 the penultimate ...

返回key對應的有序集合中指定區間的所有元素。這些元素按照score從高到低的順序進行排列。對於具有相同的score的元素而言,將會按照遞減的字典順序進行排列。該命令與ZRANGE類似,只是該命令中元素的排列順序與前者不同。



Parameters

key

start: long

end: long

withscores: bool = false



Return value

Array containing the values in specified range.



Example

$redis->zAdd('key', 0, 'val0');

$redis->zAdd('key', 2, 'val2');

$redis->zAdd('key', 10, 'val10');

$redis->zRevRange('key', 0, -1); /* array('val10', 'val2', 'val0') */



// with scores

$redis->zRevRange('key', 0, -1, true); /* array('val10' => 10, 'val2' => 2, 'val0' => 0) */
zRangeByScore 命令/方法/函式
Returns the elements of the sorted set stored at the specified key which have scores in the range [start,end]. Adding a parenthesis before start or end excludes it from the range. +inf and -inf are also valid limits. zRevRangeByScore returns the same items in reverse order, when the start and end parameters are swapped.

返回key對應的有序集合中score介於min和max之間的所有元素(包哈score等於min或者max的元素)。元素按照score從低到高的順序排列。如果元素具有相同的score,那麼會按照字典順序排列。

可選的選項LIMIT可以用來獲取一定範圍內的匹配元素。如果偏移值較大,有序集合需要在獲得將要返回的元素之前進行遍歷,因此會增加O(N)的時間複雜度。可選的選項WITHSCORES可以使得在返回元素的同時返回元素的score,該選項自從Redis 2.0版本後可用。



Parameters

key

start: string

end: string

options: array



Two options are available: withscores => TRUE, and limit => array($offset, $count)



Return value

Array containing the values in specified range.



Example

$redis->zAdd('key', 0, 'val0');

$redis->zAdd('key', 2, 'val2');

$redis->zAdd('key', 10, 'val10');

$redis->zRangeByScore('key', 0, 3); /* array('val0', 'val2') */

$redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE); /* array('val0' => 0, 'val2' => 2) */

$redis->zRangeByScore('key', 0, 3, array('limit' => array(1, 1)); /* array('val2' => 2) */

$redis->zRangeByScore('key', 0, 3, array('limit' => array(1, 1)); /* array('val2') */

$redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE, 'limit' => array(1, 1)); /* array('val2' => 2) */
zCount 命令/方法/函式
Returns the number of elements of the sorted set stored at the specified key which have scores in the range [start,end]. Adding a parenthesis before start or end excludes it from the range. +inf and -inf are also valid limits.

返回key對應的有序集合中介於min和max間的元素的個數。



Parameters

key

start: string

end: string



Return value

LONG the size of a corresponding zRangeByScore.



Example

$redis->zAdd('key', 0, 'val0');

$redis->zAdd('key', 2, 'val2');

$redis->zAdd('key', 10, 'val10');

$redis->zCount('key', 0, 3); /* 2, corresponding to array('val0', 'val2') */
zRemRangeByScore, zDeleteRangeByScore 命令/方法/函式
Deletes the elements of the sorted set stored at the specified key which have scores in the range [start,end].

移除key對應的有序集合中scroe位於min和max(包含端點)之間的所喲元素。從2.1.6版本後開始,區間端點min和max可以被排除在外,這和ZRANGEBYSCORE的語法一樣。



Parameters

key

start: double or "+inf" or "-inf" string

end: double or "+inf" or "-inf" string



Return value

LONG The number of values deleted from the sorted set



Example

$redis->zAdd('key', 0, 'val0');

$redis->zAdd('key', 2, 'val2');

$redis->zAdd('key', 10, 'val10');

$redis->zRemRangeByScore('key', 0, 3); /* 2 */
zRemRangeByRank, zDeleteRangeByRank 命令/方法/函式
Deletes the elements of the sorted set stored at the specified key which have rank in the range [start,end].

移除key對應的有序集合中rank值介於start和stop之間的所有元素。start和stop均是從0開始的,並且兩者均可以是負值。當索引值為負值時,表明偏移值從有序集合中score值最高的元素開始。例如:-1表示具有最高score的元素,而-2表示具有次高score的元素,以此類推。



Parameters

key

start: LONG

end: LONG



Return value

LONG The number of values deleted from the sorted set



Example

$redis->zAdd('key', 1, 'one');

$redis->zAdd('key', 2, 'two');

$redis->zAdd('key', 3, 'three');

$redis->zRemRangeByRank('key', 0, 1); /* 2 */

$redis->zRange('key', 0, -1, array('withscores' => TRUE)); /* array('three' => 3) */
zSize, zCard 命令/方法/函式
Returns the cardinality of an ordered set.

返回儲存在key對應的有序集合中的元素的個數。



Parameters

key



Return value

Long, the set's cardinality



Example

$redis->zAdd('key', 0, 'val0');

$redis->zAdd('key', 2, 'val2');

$redis->zAdd('key', 10, 'val10');

$redis->zSize('key'); /* 3 */
zScore 命令/方法/函式
Returns the score of a given member in the specified sorted set.

返回key對應的有序集合中member的score值。如果member在有序集合中不存在,那麼將會返回nil。



Parameters

key

member



Return value

Double



Example

$redis->zAdd('key', 2.5, 'val2');

$redis->zScore('key', 'val2'); /* 2.5 */
zRank, zRevRank 命令/方法/函式
Returns the rank of a given member in the specified sorted set, starting at 0 for the item with the smallest score. zRevRank starts at 0 for the item with the largest score.

返回key對應的有序集合中member元素的索引值,元素按照score從低到高進行排列。rank值(或index)是從0開始的,這意味著具有最低score值的元素的rank值為0。使用ZREVRANK可以獲得從高到低排列的元素的rank(或index)。



Parameters

key

member



Return value

Long, the item's score.



Example

$redis->delete('z');

$redis->zAdd('key', 1, 'one');

$redis->zAdd('key', 2, 'two');

$redis->zRank('key', 'one'); /* 0 */

$redis->zRank('key', 'two'); /* 1 */

$redis->zRevRank('key', 'one'); /* 1 */

$redis->zRevRank('key', 'two'); /* 0 */
zIncrBy 命令/方法/函式
Increments the score of a member from a sorted set by a given amount.

將key對應的有序集合中member元素的scroe加上increment。如果指定的member不存在,那麼將會新增該元素,並且其score的初始值為increment。如果key不存在,那麼將會建立一個新的有序列表,其中包含member這一唯一的元素。如果key對應的值不是有序列表,那麼將會發生錯誤。指定的score的值應該是能夠轉換為數字值的字串,並且接收雙精度浮點數。同時,你也可用提供一個負值,這樣將減少score的值。



Parameters

key

value: (double) value that will be added to the member's score

member



Return value

DOUBLE the new value



Examples

$redis->delete('key');

$redis->zIncrBy('key', 2.5, 'member1'); /* key or member1 didn't exist, so member1's score is to 0 before the increment */

                      /* and now has the value 2.5  */

$redis->zIncrBy('key', 1, 'member1'); /* 3.5 */
zUnion 命令/方法/函式
Creates an union of sorted sets given in second argument. The result of the union will be stored in the sorted set defined by the first argument. The third optionnel argument defines weights to apply to the sorted sets in input. In this case, the weights will be multiplied by the score of each element in the sorted set before applying the aggregation. The forth argument defines the AGGREGATEoption which specify how the results of the union are aggregated.

對keys對應的numkeys個有序集合計算合集,並將結果儲存在destination中。在傳遞輸入keys之前必須提供輸入keys的個數和其它可選引數。在預設情況下,元素的結果score是包含該元素的所有有序集合中score的和。如果使用WEIGHTS選項,你可以對每一個有序集合指定一個操作因子。這意味著每一個有序集合中的每個元素的score在傳遞給聚合函式之前均會被乘以該因子。當WEIGHTS沒有指定時,操作因子預設為1。

使用AGGREGATE選項,你可以指定交集中的結果如何被聚合。該選項預設值為SUM,在這種情況下,一個元素的所有score值均會被相加。當選項被設定為MIN或MAX時,結果集合中將會包含一個元素的最大或者最小的score值。如果destination已經存在,那麼它將會被重寫。



Parameters

keyOutput

arrayZSetKeys

arrayWeights

aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion.



Return value

LONG The number of values in the new sorted set.



Example

$redis->delete('k1');

$redis->delete('k2');

$redis->delete('k3');

$redis->delete('ko1');

$redis->delete('ko2');

$redis->delete('ko3');



$redis->zAdd('k1', 0, 'val0');

$redis->zAdd('k1', 1, 'val1');



$redis->zAdd('k2', 2, 'val2');

$redis->zAdd('k2', 3, 'val3');



$redis->zUnion('ko1', array('k1', 'k2')); /* 4, 'ko1' => array('val0', 'val1', 'val2', 'val3') */



/* Weighted zUnion */

$redis->zUnion('ko2', array('k1', 'k2'), array(1, 1)); /* 4, 'ko1' => array('val0', 'val1', 'val2', 'val3') */

$redis->zUnion('ko3', array('k1', 'k2'), array(5, 1)); /* 4, 'ko1' => array('val0', 'val2', 'val3', 'val1') */
zInter 命令/方法/函式
Creates an intersection of sorted sets given in second argument. The result of the union will be stored in the sorted set defined by the first argument. The third optionnel argument defines weights to apply to the sorted sets in input. In this case, the weights will be multiplied by the score of each element in the sorted set before applying the aggregation. The forth argument defines the AGGREGATEoption which specify how the results of the union are aggregated.

計算numkeys個由keys指定的有序集合的交集,並且將結果儲存在destination中。在該命令中,在你傳遞輸入keys之前,必須提供輸入keys的個數和其它可選的引數。

在預設情況下,一個元素的結果score是具有該元素的所有有序集合的score的和。關於WEIGHTS和AGGREGATE選項,可以參看ZUNIONSTORE命令。如果目標已經存在,那麼它將會被重寫。



Parameters

keyOutput

arrayZSetKeys

arrayWeights

aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zInter.



Return value

LONG The number of values in the new sorted set.



Example

$redis->delete('k1');

$redis->delete('k2');

$redis->delete('k3');



$redis->delete('ko1');

$redis->delete('ko2');

$redis->delete('ko3');

$redis->delete('ko4');



$redis->zAdd('k1', 0, 'val0');

$redis->zAdd('k1', 1, 'val1');

$redis->zAdd('k1', 3, 'val3');



$redis->zAdd('k2', 2, 'val1');

$redis->zAdd('k2', 3, 'val3');



$redis->zInter('ko1', array('k1', 'k2'));               /* 2, 'ko1' => array('val1', 'val3') */

$redis->zInter('ko2', array('k1', 'k2'), array(1, 1));  /* 2, 'ko2' => array('val1', 'val3') */



/* Weighted zInter */

$redis->zInter('ko3', array('k1', 'k2'), array(1, 5), 'min'); /* 2, 'ko3' => array('val1', 'val3') */

$redis->zInter('ko4', array('k1', 'k2'), array(1, 5), 'max'); /* 2, 'ko4' => array('val3', 'val1') */