Redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
不同的是zset的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。

key

value

key

[100北京,90上海,80深圳,70广州]

常用操作:

1、zadd

将一个或多个 member 元素及其 score 值加入到有序集合 key 中

127.0.0.1:6379> zadd k1 100 hx1 90 hx2 80 hx3 70 hx4 60 hx5
(integer) 5

解释:

 

2、zrem

删除有序集合 key 中的一个或多个成员

127.0.0.1:6379> zrem k1 hx1
(integer) 1

3、zcard

获取有序集 key 的元素成员的个数

127.0.0.1:6379> ZCARD k1
(integer) 4

4、zrank

获取有序集 key 中成员 member 的排名,有序集成员按 score 值从小到大顺序排列

127.0.0.1:6379> zrank k1 hx4
(integer) 1
127.0.0.1:6379> zrank k1 hx5
(integer) 0
127.0.0.1:6379> zrank k1 hx3
(integer) 2

5、zrevrank

获取有序集 key 中成员 member 的排名,有序集成员按 score 值从大到小顺序排列

127.0.0.1:6379> ZREVRANk k1 hx5
(integer) 4
127.0.0.1:6379> ZREVRANk k1 hx4
(integer) 3
127.0.0.1:6379> ZREVRANk k1 hx3
(integer) 2

6、zrange

获取有序集 key 中,指定区间内的成员,按 score 值从小到大排列

127.0.0.1:6379> ZRANGE k1 0 -1
1) "hx5"
2) "hx4"
3) "hx3"
4) "hx2"

7、zrevrange

获取有序集 key 中,指定区间内的成员,按 score 值从大到小排列

127.0.0.1:6379> ZREVRANGE k1 0 -1
1) "hx1"
2) "hx2"
3) "hx3"
4) "hx4"
5) "hx5"

 

8、类型

127.0.0.1:6379> type k1
zset

8、其他操作

zrangebyscore:获取有序集 key 中,所有 score 值介于 min 和 max 之间的成员

127.0.0.1:6379> ZRANGEBYSCORE k1 70 90 
1) "hx4"
2) "hx3"
3) "hx2"

zrevrangebyscore:获取有序集 key 中, score 值介于 max 和 min 之间的所有的成员

127.0.0.1:6379> ZREVRANGEBYSCORE k1 90 70
1) "hx2"
2) "hx3"
3) "hx4"

zcount:获取有序集 key 中,所有 score 值介于 min 和 max 之间的成员的个数

127.0.0.1:6379> ZCOUNT k1 70 90
(integer) 3