Redis 07 Zset


Zset 就是 Set 的有序集合

应用场景:排行榜

赋值

添加一个或多个元素

zadd

127.0.0.1:6379> zadd zset 1 one
(integer) 1
127.0.0.1:6379> zadd zset 2 two 3 three
(integer) 2

查询

正序查询指定下标范围的元素

zrange

127.0.0.1:6379> zrange zset 0 1
1) "one"
2) "two"
127.0.0.1:6379> zrange zset 0 -1 # 0 -1 即为查询所有的元素
1) "one"
2) "two"
3) "three"

倒序查询指定下标范围的元素

zrevrange

127.0.0.1:6379> zrevrange zset 0 -1
1) "three"
2) "two"
3) "one"

获取元素个数

zcard

127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"
127.0.0.1:6379> zcard zset
(integer) 2

获取指定区间的元素数量

zcount

127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zcount zset 1 3 # 这里下标从 1 开始
(integer) 3
127.0.0.1:6379> zcount zset 1 2
(integer) 2

排序

正序

zrangebyscore

127.0.0.1:6379> zrangebyscore zset -inf +inf # 负无穷到正无穷正序排列
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrangebyscore zset -inf 2 # 负无穷到 2 排序
1) "one"
2) "two"
127.0.0.1:6379> zrangebyscore zset -inf 2 limit 0 1 # 排序结果只取 0 到 1 条
1) "one"
127.0.0.1:6379> zrangebyscore zset -inf +inf withscores # 排序结果带上分数
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"

倒序

zrevrangebyscore

127.0.0.1:6379> zrevrangebyscore zset +inf -inf # 正无穷到负无穷倒序排列
1) "three"
2) "two"
3) "one"

移除

移除指定元素

zrem

127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrem zset three # 移除指定元素
(integer) 1
127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"