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