redis 有序集合(zset)函数redis
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') */