redis语序集合和集合set
是一样内部value
为string
类型的集合,有序不允许重复元素
但是,zset
的每个元素有一个double
类型的分数(score
).redis正是靠这个分数对元素从小到大排序.
zset
中元素唯一但是分数可以重复
增
zadd
zdd key score value [score2 value2] ...
往zset
中添加一个后多个元素
127.0.0.1:6379> zadd student 9 zhangsan
(integer) 1
如果元素之前已存在,那么相当于更新分数,那么如果分数也和之前的一样,就相当于什么都不做
查询
zcard
zcard key
获取有序集合内部的成员数
127.0.0.1:6379> zcard student
(integer) 4
zcount
zcount key min max
计算有序集合指定分数区间的成员数
zlexcount
zlexcount key min max
在有序集合中计算指定字典区间的元素数量
zrank
zrank key value
查询值在有序列表中的索引位置
zrange
zrangge key start end
通过索引区间返回该区间的元素
127.0.0.1:6379> zrange zset1 0 5
1) "a"
2) "b"
3) "c"
4) "t"
5) "h"
6) "k"
修改
zincrby
zincrby key increment value
指定元素的分数自增,increment
为增量
删除
zrem
zrem key value [value2] ...
移除有序集合中一个或多个元素
zremrangebyrank
zremrangebyrank key start stop
根据分数排名移除元素
127.0.0.1:6379> zrange zset1 0 5
1) "a"
2) "b"
3) "c"
4) "t"
5) "h"
6) "k"
127.0.0.1:6379> zremrangebyrank zset1 2 3
(integer) 2
zremrangebyscore
zremrangebyscore key min max
根据分数范围去移除元素