Redis五种数据结构之zset(集合) 常用函数及案例
Redis五种数据结构分别是:
- String: Key-Value(set key value/get key)
- Hash: key-filedValue(Map,即key对应Map)
- List: 有序,可重复
- Set: 无序,不可重复
- SortedSet(zset): 有序,不可重复
ZSet常用函数及案例(可用于去重/交集/补集/并集)
Zset是在set基础上,加一个score值。
- 之前set是k1 v1 v2 v3
- 现在是k1 score1 v1 score2 v2
zadd/zrange
zadd:创建zset
zrange:查看zset中的元素
127.0.0.1:6379> zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
(integer) 5
127.0.0.1:6379> zrange zset01 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
127.0.0.1:6379> zrange zset01 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
9) "v5"
10) "100"
zrangebyscore
- zrangebyscore key 开始score 结束score(默认包含开始score和结束score)
- 添加
(
表示不包含 - limit作用是返回限制,limit开始下标步,多少步
127.0.0.1:6379> zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
(integer) 5
127.0.0.1:6379> zrangebyscore zset01 60 90
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> zrangebyscore zset01 (60 (90
1) "v2"
2) "v3"
127.0.0.1:6379> zrangebyscore zset01 60 (90
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> zrangebyscore zset01 60 90 limit 2 2
1) "v3"
2) "v4"
127.0.0.1:6379> zrangebyscore zset01 60 90 limit 0 3
1) "v1"
2) "v2"
3) "v3"
zrem
zrem:zrem key 某score下对应的value值,作用是删除元素
127.0.0.1:6379> zrange zset01 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
127.0.0.1:6379> zrem zset01 v1
(integer) 1
127.0.0.1:6379> zrange zset01 0 -1
1) "v2"
2) "v3"
3) "v4"
4) "v5"
zcard/zcount/zrank/zscore
zcard/zcount:统计个数(zcard/zcount key score区间)
zrank:获得下标值(zrank key values值)
zscore:获得分数(zscore key 对应值)
127.0.0.1:6379> zcard zset01
(integer) 4
127.0.0.1:6379> zcount zset01 80 100
(integer) 3
127.0.0.1:6379> zrank zset01 v5
(integer) 3
127.0.0.1:6379> zrank zset01 v4
(integer) 2
127.0.0.1:6379> zscore zset01 v3
"80"
zrevrank/zrevrange/zrevrangebyscore
zrevrank:zrevrank key value值,获得逆序下标值
zrevrange:获得逆序值
zrevrangebyscore:获得逆序排序值
127.0.0.1:6379> zrevrank zset01 v4
(integer) 1
127.0.0.1:6379> zrevrank zset01 v5
(integer) 0
127.0.0.1:6379> zrange zset01 0 -1
1) "v2"
2) "v3"
3) "v4"
4) "v5"
127.0.0.1:6379> zrevrange zset01 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
127.0.0.1:6379> zrevrangebyscore zset01 90 70
1) "v4"
2) "v3"
3) "v2"
127.0.0.1:6379> zrevrangebyscore zset01 70 90
(empty list or set)