redis有序集合与集合不同的是每个成员都会关联一个double类型的分数,redis就是利用分数对集合中的成员进行从小到大的排序。
目录
查询集合成员
- zrange key start stop [withscores] 通过索引区间取得有序集合中给定区间内的成员;
- zrangebylex key min max [limit offset count] 通过字典区间取得有序集合中给定区间内的成员;
- zrangebyscore key min max [withscores] [limit offset count] 通过成员分数区间取得有序集合中给定区间内的成员;
- zrevrange key start stop [withscores] 通过索引区间取得有序集合中给定区间内的成员,从大到小排序;
- zrevrangebyscore key min max [withscores] [limit offset count] 通过成员分数区间取得给定区间内的成员,从大到小排序;
查询集合成员的分数
- zscore key member 取得有序集合中给定成员的分数值;
- zrank key member 取得有序集合中给定成员的排名,集合从小到大排序的;
- zrevrank key member 取得有序集合中给定成员的排名,集合从大到小排序的;
统计
- zcard key 取得有序集合的成员数;
- zcount key min max 取得有序集合中指定区间分数的成员数;
- zlexcount key min max 取得有序集合中指定区间字符串的成员数,该集合必须是同分数的;
加入集合
- zadd key score member [score member [...]] 向有序集合中添加一个或多个成员,或修改已存在成员的分数;
成员增量
- zincrby key increment member 对有序集合中指定成员的分数加上增量 increment;
删除集合成员
- zrem key member [member [...]] 移除有序集合中一个或多个成员;
- zremrangebylex key min max [with scores] 移除有序集合中给定字符串区间的成员,这个有序集合的分数必须相同,否则有错误;
例:zadd myzset 0 a 0 b 0 c 0 d 0 e // 分数都是0,必须是相同的
zremrangebylex myzset [a (c // “[”表示包括字符串a,“(”表示小于字符串c但不包括c
zrange myzset 0 -1 // 集合只剩下:c d e
- zremrangebyrank key start end 移除有序集合中从start 开始到 end 结束个成员(包括第 start|end 个成员);
- zremrangebyscore key min max [with scores] [limit] 移除游戏集合中给定分数区间的成员(包括分数为 min|max 的成员);
交集
- zinterstore destination numkeys key [key [...]] 计算给定的一个或多个有序集合的交集并将结果保存在新的有序集合destination中,其中给定集合的数量必须由numkeys参数指定。
并集
- zunionstore destination numkeys key [key [...]] 计算给定的一个或多个有序集合的并集并将结果保存在新的有序集合destination中,其中给定集合的数量必须由numkeys参数指定。
迭代
- zscan key cursor [match pattern] [count] 迭代有序集合中的元素,包括元素成员、元素分值。