Redis数据类型zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
常用命令
ZADD
ZADD key-name score member [score member …] 将带有指定分值的成员添加到有序集合里面
例如:
127.0.0.1:6379> zadd zset1 0 a 1 b 2 c
(integer) 3
ZREM
ZREM key-name member [member …] 从有序集合中移除指定成员并返回移除的成员数量。
例如:
127.0.0.1:6379> zrem zset1 a
(integer) 1
ZCARD
ZCARD key-name 返回有序集合包含的成员数量
例如:
127.0.0.1:6379> zcard zset1
(integer) 2
ZINCRBY
ZINCRBY key-name increment member 将member成员的分值增加increment,并返回member增加后的分值
例如:
127.0.0.1:6379> zincrby zset1 3 b
"4"
ZCOUNT
ZCOUNT key-name min max 返回分值介于min max 之间的成员数量
例如:
127.0.0.1:6379> zcount zset1 0 100
(integer) 2
ZRANK
ZRANK key-name member 返回成员member在有序集合中的排名
例如:
127.0.0.1:6379> zrank zset1 c
(integer) 0
ZSCORE
ZSCORE key-name member 返回成员member的分值
例如:
127.0.0.1:6379> zscore zset1 b
"4"
ZRANGE
ZRANGE key-name start stop [WITHSCORES]返回有序集合中排名介于start和stop之间的成员,如果有可选参数WITHSCORES,则同时返回分值
例如:
127.0.0.1:6379> zrange zset1 0 1
1) "c"
2) "b"
127.0.0.1:6379> zrange zset1 0 1 WITHSCORES
1) "c"
2) "2"
3) "b"
4) "4"
ZREVRANK (rev:reverse反转)
ZREVRANK key-name member 返回有序集合成员member的排名,成员按照分值从大到小排序
例如:
127.0.0.1:6379> zrevrank zset1 c
(integer) 1
ZREVRANGE
ZREVRANGE key-name start stop [WITHSCORES]返回有序集合给定排名范围内的成员,成员按照分值从大到小排列
例如:
127.0.0.1:6379> zrevrange zset1 0 1 WITHSCORES
1) "b"
2) "4"
3) "c"
4) "2"
ZRANGEBYSCORE
ZRANGEBYSCORE key-name min max [WITHSCORES]返回分值介于min和max之间的成员
例如:
127.0.0.1:6379> zrangebyscore zset1 0 100 WITHSCORES
1) "c"
2) "2"
3) "b"
4) "4"
ZREVRANGEBYSCORE
ZREVRANGEBYSCORE key-name max min [WITHSCORES]返回分值介于min和max之间的成员,成员按照分值从大到小排列
例如:
127.0.0.1:6379> zrevrangebyscore zset1 100 0 WITHSCORES
1) "b"
2) "4"
3) "c"
4) "2"
ZREMRANGEBYRANK
ZREMRANGEBYRANK key-name start stop 移除有序集合中排名介于start和stop之间的成员
例如:
127.0.0.1:6379> zremrangebyrank zset1 0 0
(integer) 1
127.0.0.1:6379> zrange zset1 0 2 WITHSCORES
1) "b"
2) "4"
ZREMRANGEBYSCORE
ZREMRANGEBYSCORE key-name min max 移除有序集合中分值介于min和max之间的成员
例如:
127.0.0.1:6379> zremrangebyscore zset1 1 2
(integer) 0
127.0.0.1:6379> zremrangebyscore zset1 3 4
(integer) 1
127.0.0.1:6379> zrange zset1 0 2 WITHSCORES
(empty array)