文章目录
zset(有序集合)
有序集合(score/value),去重并且根据score权重值来进行排序的。score从小到大排列。
(1)添加成员
bash
zadd key score1 member1 score2 member2 score3 member3 ....
设置榜单achievements,设置成绩和用户名作为achievements的成员
bash
127.0.0.1:6379> zadd achievements 61 xiaoming 62 xiaohong 83 xiaobai 78 xiaohei 87 xiaohui 99 xiaolan
(integer) 6
127.0.0.1:6379> zadd achievements 85 xiaohuang
(integer) 1
127.0.0.1:6379> zadd achievements 54 xiaoqing
(2)获取score在指定区间的所有成员
python
zrangebyscore key min max # 按score进行从低往高排序获取指定score区间
zrevrangebyscore key min max # 按score进行从高往低排序获取指定score区间
zrange key start stop # 按scoer进行从低往高排序获取指定索引区间
zrevrange key start stop # 按scoer进行从高往低排序获取指定索引区间
python
zrange achievements 0 -1 # 从低到高全部成员
(3)获取集合长度
bash
zcard key
获取users的长度
bash
zcard achievements
(4)获取指定成员的权重值
bash
zscore key member
获取users中xiaoming的成绩
bash
127.0.0.1:6379> zscore achievements xiaobai
"93"
127.0.0.1:6379> zscore achievements xiaohong
"62"
127.0.0.1:6379> zscore achievements xiaoming
"61"
(5)获取指定成员在集合中的排名
排名从0开始计算
bash
zrank key member # score从小到大的排名
zrevrank key member # score从大到小的排名
获取achievements中xiaohei的分数排名,从大到小
bash
127.0.0.1:6379> zrevrank achievements xiaohei
(integer) 4
(6)获取score在指定区间的所有成员数量
bash
zcount key min max
获取achievements从0~60分之间的人数[闭区间]
bash
127.0.0.1:6379> zcount achievements 0 60
(integer) 2
127.0.0.1:6379> zcount achievements 54 60
(integer) 2
(7)给指定成员增加增加权重值
bash
zincrby key score member
给achievements中xiaobai增加10分
bash
127.0.0.1:6379> ZINCRBY achievements 10 xiaobai
"93
(8)删除成员
bash
zrem key member1 member2 member3 ....
从achievements中删除xiaoming的数据
bash
zrem achievements xiaoming
(9)删除指定数量的成员
bash
# 删除指定数量的成员,从最低score开始删除
zpopmin key [count]
# 删除指定数量的成员,从最高score开始删除
zpopmax key [count]
例子:
bash
# 从achievements中提取并删除成绩最低的2个数据
127.0.0.1:6379> zpopmin achievements 2
1) "xiaoqing"
2) "54"
3) "xiaolv"
4) "60"
# 从achievements中提取并删除成绩最高的2个数据
127.0.0.1:6379> zpopmax achievements 2
1) "xiaolan"
2) "99"
3) "xiaobai"
4) "93"