您的位置:首页 > 数据库 > Redis

Redis--有序集合(sorted set)

2017-06-08 17:56 323 查看
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

1、Zadd 命令  

Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。

如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。

分数值可以是整数值或双精度浮点数。

如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。

当 key 存在但不是有序集类型时,返回一个错误。

返回被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。



2、Zrange 命令  

Zrange 返回有序集中,指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序。

具有相同分数值的成员按字典序(lexicographical order )来排列。

下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。

你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推



3、Zcard 命令

   Zcard 命令用于计算集合中元素的数量

  


4、Zcount 命令

  Zcount 命令用于计算有序集合中指定分数区间的成员数量

  分数值在 min 和 max 之间(包含)的成员的数量。

  


5、Zincrby 命令  

Zincrby 命令对有序集合中指定成员的分数加上增量 increment可以通过传递一个负数值 increment ,让分数减去相应的值。

当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member



  


6、Zlexcount 命令

   Zlexcount 命令在计算有序集合中指定字典区间内成员数量。

  -表示最小值;+表示最大值。[表示包含当前值,(表示不包含当前值

  具体参考

  


7、Zrangebylex 命令

  Zrangebylex 通过字典区间返回有序集合的成员

  -表示最小值;+表示最大值。[表示包含当前值,(表示不包含当前值

  


7、 Zinterstore 命令  

Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。

默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。



8、Zrangebyscore 命令 Zrevrangebyscore命令 

Zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。

具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。

默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。

 

Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。

具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。

除了成员按分数值递减的次序排列这一点外

  


9、Zrank 命令 Zrevrank 命令

  Zrank 返回有序集中指定成员的排名(分数)。其中有序集成员按分数值递增(从小到大)顺序排列。

  返回如果成员是有序集 key 的成员,返回 member 的排名。 如果成员不是有序集 key 的成员,返回 nil   

revrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。

排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。

使用 ZRANK 命令可以获得成员按分数值递增(从小到大)排列的排名

  

  


10、Zrem 命令

  Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。

  返回被成功移除的成员的数量,不包括被忽略的成员。

  


11、Zremrangebylex 命令

  Zremrangebylex 命令用于移除有序集合中给定的字典区间的所有成员。

  返回被成功移除的成员的数量

12、Zremrangebyrank 命令

   Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的所有成员

  返回被移除成员的数量。

  


13、Zremrangebyscore 命令 Zrevrangebyscore 命令 

  Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的所有成员。  

Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。

具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。

  


13、Zrevrange 命令  

Zrevrange 命令返回有序集中,指定区间内的成员。

其中成员的位置按分数值递减(从大到小)来排列。

具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列

返回指定区间内,带有分数值(可选)的有序集成员的列表。

与zrange返回的顺序相反。

  


14、Zrevrangebyscore命令  

Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。

具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。

除了成员按分数值递减的次序排列这一点外

 

15、Zscore 命令

  Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil。

  返回成员的分数值,以字符串形式表示

  


16、Zunionstore 命令  

Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。

默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和

  返回保存到 destination 的结果集的成员数量

  


17、 Zscan 命令

  Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)

  参考 资料

  Redis中国社区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: