Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

ZSet数据类型常用命令

  • zadd 将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。分数值可以是整数值或双精度浮点数。如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误
  • zcard 计算集合中元素的数量
  • zcount 计算有序集合中指定分数区间的成员数量
  • zrange 返回有序集中,指定区间内的成员。其中成员的位置按分数值递增(从小到大)来排序。具有相同分数值的成员按字典序(lexicographical order )来排列

redis lset大小限制 redis zset 最大_结果集

  • zlexcount 计算有序集合中指定字典区间内成员数量
  • zrangebyscore 通过字典区间返回有序集合的成员
  • zrangebyscores 返回有序集合中指定分数区间的成员列表。默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)

  • zincrby 对有序集合中指定成员的分数加上增量 increment,可以通过传递一个负数值 increment ,让分数减去相应的值
  • zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列
  • zrem 移除有序集中的一个或多个成员,不存在的成员将被忽略
  • zremrangebylex 移除有序集合中给定的字典区间的所有成员
  • zremrangebyrank 移除有序集中,指定排名(rank)区间内的所有成员
  • zremrangebyscore 移除有序集中,指定分数(score)区间内的所有成员
  • zrevrange 返回有序集中,指定区间内的成员。其中成员的位置按分数值递减(从大到小)来排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列
  • zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列
  • zrevrank 返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。排名以 0 为底,也就是说, 分数值最大的成员排名为 0
  • zscore 返回有序集中,成员的分数值
  • zinterstore 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和
  • zunionstore 计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和
  • zscan 迭代有序集合中的元素(包括元素成员和元素分值)。cursor - 游标;pattern - 匹配的模式;count - 指定从数据集里返回多少元素,默认值为 10