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