Redis 之Zset的使用

2,694 阅读2分钟

简介

在set的基础上加了 score ,根据score进行排序

创建查询和移除

标题
zadd将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。score 值可以是整数值或双精度浮点数。如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
zrange返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。详情
zrevrange返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。 具有相同 score 值的成员按字典序的逆序(reverse lexicographical order)排列。除了成员按 score 值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE key start stop [WITHSCORES] 命令一样。
zrem 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
zcard返回有序集 key 的基数。
127.0.0.1:6379> zadd rank 10 baidu.com 5 bing.com 15 google.com  # 插入 key score member [score member]
(integer) 3
127.0.0.1:6379> zrange rank 0 -1   # 查询升序排
1) "bing.com"
2) "baidu.com"
3) "google.com"
127.0.0.1:6379> zrange rank 0 -1 withscores   # 正序从小到大  withscores 会查询score
1) "bing.com"
2) "5"
3) "baidu.com"
4) "10"
5) "google.com"
6) "15"
127.0.0.1:6379> zrevrange rank 0 -1 withscores   #倒序从大到小
1) "google.com"
2) "15"
3) "baidu.com"
4) "10"
5) "bing.com"
6) "5"
127.0.0.1:6379> zrem rank baidu.com   # 移除
(integer) 1
127.0.0.1:6379> zrange rank 0 -1
1) "bing.com"
2) "google.com"
127.0.0.1:6379>  zcard rank   # 查询zset有多少元素
(integer) 2
标题
zcount返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量
127.0.0.1:6379> zadd rank2 40 baidu.com 46 bing.com 55 google.com 30 bilibili.com
(integer) 4
127.0.0.1:6379> zrange rank2 0 -1 withscores
1) "bilibili.com"
2) "30"
3) "baidu.com"
4) "40"
5) "bing.com"
6) "46"
7) "google.com"
8) "55"
127.0.0.1:6379> zcount rank2 40 55   # 查询score区间在[40,50] 的元素的个数
(integer) 3