5.有序集合
和三类存储着键与值之间的映射类似,有序集合也存储着成员与分值之间的映射,并且提供了分值处理命令,以及根据分值大小有序地获取或扫描成员和分值的命令。
本节将对操作有序集合的命令进行介绍,其中包括向有序集合添加新元素的命令、更新已有元素的命令,以及对有序集合进行交集运算和并集运算的命令。
一些常用的有序集合命令
命令 | 用例和描述 |
---|---|
ZADD | ZADD key-name score member [score member ...] --将带有给定分值的成员添加到有序集合里面 |
ZREM | ZREM key-name member [member ...] --有序集合里面移除给定的成员,并返回被移除成员的数量 |
ZCARD | ZCARD key-name --返回有序集合包含的成员数量 |
ZINCRBY | ZINCRBY key-name increment member --将member成员的分值加上increment |
ZCOUNT | ZCOUNT key-name min max --返回分值介于min和max之间的成员数量 |
ZRANK | ZRANK key-name member --返回成员member在有序集合中的排名 |
ZSCORE | ZSCORE key-name member --返回成员member的分值 |
ZRANGE | ZRANGE key-name start stop [WITHSCORES] --返回有序集合中排名介于start和stop之间的成员,如果给定了可选的WITHSCORES选项,那么命令会将成员的分值也一并返回 |
Redis中常用的有序集合命令
# 将带有分值1的redis存入有序集合runoobkey中
127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
# 显示分值在0到10之间的成员同时显示分值
127.0.0.1:6379> zrange runoobkey 0 10 withscores
1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"
# 返回当前有序集合runoobkey中成员的数量
127.0.0.1:6379> zcard runoobkey
(integer) 3
# 将run00bkey有序集合中的redis成员分值加2,返回的结果是当前的值
127.0.0.1:6379> zincrby runoobkey 2 redis
"3"
#返回有序集合runoobkey在0到10分值之间成员的数量
127.0.0.1:6379> zcount runoobkey 0 10
(integer) 3
# 返回成员在有序集合中的排名从0开始
127.0.0.1:6379> zrank runoobkey mongodb
(integer) 0
127.0.0.1:6379> zrank runoobkey redis
(integer) 1
127.0.0.1:6379> zrank runoobkey mysql
(integer) 2
# 返回当前成员redis在有序集合中的分支
127.0.0.1:6379> zscore runoobkey redis
"3"
# 从有序集合中删除redis成员
127.0.0.1:6379> zrem runoobkey redis
(integer) 1
有序集合的范围型数据获取命令和范围型数据删除命令,以及并集命令和交集命令
命令 | 用例和描述 |
---|---|
ZREVRANK | ZREVRANK key-name member --返回有序集合里成员member的排名,成员按照分值由大到小排列 |
ZREVRANGE | ZREVRANGE key-name start stop [WITHSCORES] --返回有序集合给定排名范围内的成员,成员按照分值由大到小排列 |
ZRANGEBYSCORE | ZRANGEBYSCORE key min max [WITHSCORES] [limit offset count ] --返回有序集合中,分值介于min和max之间的所有成员 |
ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key max min [WITHSCORES] [limit offset count ] --获取有序集合中分值介于min和max之间的所有成员,并按照分值由大到小的顺序范围它们 |
ZREMRANGEBYRANK | ZREMRANGEBYRANK key-name start stop --移除有序集合中排名从start和stop之间的所有成员 |
ZREMRANGEBYSCORE | ZREMRANGEBYSCORE key-name min max --移除有序集合中分值介于min和max之间的所有成员 |
ZINTERSTORE | ZINTERSTORE dest-key key-count key [key . . .] [WEIGHT weight [weight . . .]] [AGGREGATE SUM|MIN|MAX] --对给定的有序集合执行类似于集合的交集运算 |
ZUNIONSTORE | ZUNIONSTORE dest-key key-count key [key . . .] [WEIGHTS weight [weight . . .]] [AGGREGATE SUM|MIN|MAX] --对给定的有序集合执行类似于集合的并集运算 |
以上的示例请参考如下链接:
https://www.runoob.com/redis/redis-sorted-sets.html
不怕从零开始,只怕从未启程!
参考文献:
菜鸟教程:https://www.runoob.com/redis/redis-keys.html
《Redis实战》Josiah L. Carlson著