实验环境
redis版本: 7.0.4
一. 概述
Redis的ZSet是一个可排序的Set集合,ZSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,集合成员是唯一的,但是评分可以重复。
ZSet具备下列特性:
- 可排序
- 元素不重复
- 查询速度快
因为ZSet的可排序特性,经常被用来实现排行榜这样的功能。
二. 命令
-
增加元素
127.0.0.1:6379> ZADD zset1 1 first 2 second 3 third 4 fourth (integer) 0
-
删除元素
127.0.0.1:6379> ZREM zset1 first (integer) 1
-
获取集合中元素的个数
127.0.0.1:6379> ZCARD zset1 (integer) 3
-
统计score值在给定范围内的所有元素的个数
127.0.0.1:6379> ZCOUNT zset1 1 4 (integer) 3
-
获取指定元素在集合中的排名
# 正序排名 127.0.0.1:6379> ZRANK zset1 second (integer) 0 # 逆序排名 127.0.0.1:6379> ZREVRANK zset1 second (integer) 2
-
返回有序集合中下标在范围之间的元素
# 正序 127.0.0.1:6379> ZRANGE zset1 0 2 1) "second" 2) "third" 3) "fourth" # 逆序 127.0.0.1:6379> ZREVRANGE zset1 0 2 1) "fourth" 2) "third" 3) "second"
-
返回score值介于到范围之间的元素
# 取出得分0到正无穷的元素(正序) 127.0.0.1:6379> ZRANGEBYSCORE zset1 0 +inf WITHSCORES 1) "second" 2) "2" 3) "third" 4) "3" 5) "fourth" 6) "4" # limit可以起到类似分页的作用 127.0.0.1:6379> ZRANGEBYSCORE zset1 0 +inf WITHSCORES limit 0 1 1) "second" 2) "2"# 取出得分正无穷到0的元素(逆序) 127.0.0.1:6379> ZREVRANGEBYSCORE zset1 +inf 0 withscores 1) "fourth" 2) "4" 3) "third" 4) "3" 5) "second" 6) "2"127.0.0.1:6379> ZREVRANGEBYSCORE zset1 +inf 0 withscores limit 0 1 1) "fourth" 2) "4"