和散列存儲著鍵與值之間的映射關系類似,有序集合也存儲著成員與分值之間的映射,并且提供了分值處理命令,以及根據分值大小有序地獲取(fetch)和掃描(scan)成員和分值的命令。這里介紹一些常用命令,以及在 Yii 中的使用。
ZADD
> ZADD:ZADD key-name score member \[score member …\]
> 將帶有給定分值的成員添加到有序集合里面。
ZREM
> ZREM:ZREM key-name member \[member …\]
> 從有序集合里面移除給定的成員,并返回被移除成員的數量。
ZCARD
> ZCARD:ZCARD key-name
> 返回有序集合包含的成員數量。
ZINCRBY
> ZINCRBY:ZINCRBY key-name increment member
> 將 member 成員的分值加上 increment。
ZCOUNT
> ZCOUNT:ZCOUNT key-name min max
> 返回分值介于 min 和 max 之間的成員數量。
ZRANK
> ZRANK:ZRANK key-name member
> 返回成員 member 在有序集合中的排名。排名從 0 開始。
ZSCORE
> ZSCORE:ZSCORE key-name member
> 返回成員 member 的分值。
ZRANGE
> ZRANGE:ZRANGE key-name start stop \[WITHSCORES\]
> 返回有序集合中排名介于 start 和 stop 之間的成員,如果給定了可選的 WITHSCORES 選項,那么命令會將成員的分值也一并返回。
ZREVRANK
> ZREVRANK:ZREVRANK key-name member
> 返回有序集合里成員 member 的排名,成員按照分值從大到小排序。
ZREVRANGE
> ZREVRANGE:ZREVRANGE key-name start stop \[WITHSCORES\]
> 返回有序集合給定排名范圍內的成員,成員按照分值從大到小排序。
ZRANGEBYSCORE
> ZRANGEBYSCORE:ZRANGEBYSCORE key min max \[WITHSCORES\] \[LIMIT offset count\]
> 返回有序集合中,分值介于 min 和 max 之間的所有成員。
ZREVRANGEBYSCORE
> ZREVRANGEBYSCORE:ZREVRANGEBYSCORE key max min \[WITHSCORES\] \[LIMIT offset count\]
> 獲取有序集合中分值介于 min 和 max 之間的所有成員,并按照分值從大到小的順序來返回它們。
ZREMRANGEBYRANK
> ZREMRANGEBYRANK:ZREMRANGEBYRANK key-name start stop
> 移除有序集合中排名介于 start 和 stop 之間的所有成員。
ZREMRANGEBYSCORE
> ZREMRANGEBYSCORE:ZREMRANGEBYSCORE key-name min max
> 移除有序集合中分值介于 min 和 max 之間的所有成員。
**在 Yii 中使用實例:**
```
// 添加3組成員及其分值
Yii::$app->redis->zadd('testZsetKey', 1, 'a', 2, 'b', 3, 'c'); // 3
// 返回成員數量
Yii::$app->redis->zcard('testZsetKey'); // 3
// 將c成員的分值加3
Yii::$app->redis->zincrby('testZsetKey', 3, 'c'); // 6
// 返回c成員的分值
Yii::$app->redis->zscore('testZsetKey', 'c'); // 6
// 獲取c在有序集合中的排名,排名從0開始
Yii::$app->redis->zrank('testZsetKey', 'c'); // 2
// 返回分值介于1和6之間的成員數量
Yii::$app->redis->zcount('testZsetKey', 1, 6); // 3
// 移除成員b
Yii::$app->redis->zrem('testZsetKey', 'b'); // 1
// 返回有序集合中所有成員及分值
Yii::$app->redis->zrange('testZsetKey', 0, -1, 'WITHSCORES'); // ["a","1","c","6"]
```