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) */