Redis有序集合(sorted set)使用

有序集合说明

Redis的有序集合(sorted set),同时具有“有序”和“集合”两种性质,这种数据结构中的每个元素都由一个成员和和一个与成员相关联的分值组成,其中成员以字符串方式存储,而分值则以64位双精度浮点数格式存储。与集合一样,有序集合中的每一个成员都是独一无二的,同一个有序中不会出现重复的成员,与此同时有序集合的成员将按照他们各自的分值大小进行排序:比如分值为3.14的成员将小于分值为10.24的成员,而分值为10000的成员也会小于分支为10086的成员有序集合的分值,除了可以是数字之外,还可以是字符串"+inf "或者"-inf ",这两个特殊分值分别用于表示无穷大和无穷小。

记录薪水数据的有序集合


       需要注意的是,虽然同一个有序集合,不能存储相同的成员,但不同成员的分值却可以是相同的。当两个或多个成员拥有相同的分值时,Redis将按照这些成员在字典中的大小对其进行排序:举个例子,如果成员apple和成员zero都拥有相同的分值100,那么Redis将认为成员apple小于成员zero,这是因为在字典序中字母a开头的单词要小于字母Z开头的单词。

记录水果价格的有序集合


       有序集合是Redis提供的所有数据结构中最为灵活的一种,它可以以多种不同的方式存取数据,比如根据成员获取分值,根据分值获取成员,根据成员的排名获取成员,根据指定的分值范围,获取不同成员等。

有序集合通用命令使用

zadd:添加或更新成员

通过zadd命令用户,可以向有序集合中添加一个或多个新成员

zadd sorted-set score member [score member ...]

默认情况下,zadd命令将返回成功添加的新成员数量作为返回值。

上图示例,对于不存在的键salary执行zadd命令,将创建出一个包含4个成员的有序集合。

通过zadd命令新创建出来的有序集合salary


zadd命令除了可以向有序集合添加新成员之外,还可以对有序中已经存在的成员分值进行更新:在默认情况下,如果用户在执行zadd命令时,给定成员已经存在了分值并且给定的分值和成员现有的分值并不相同,那么zadd命令将使用给定的新分值去覆盖现有的旧分值。

举个例子,对于有序集合salary,之前tom薪水为2000,我们执行zadd salary 5000 tom命令

扫描二维码关注公众号,回复: 12685217 查看本文章

命令返回为0,因为这是一次更新操作,没有添加任何新成员,所以命令返回0

通过zadd命令更新后的有序集合salary

从Redis3.0.2版本开始,Redis允许用户在执行的命令是通过使用可选的xx选项或者nx选项来显示的指示命令只执行更新操作或只执行添加操作

zadd sorted-set [xx|nx] score member [score member ...]
这两个选项的功能如下:

  • 在给定xx选项的情况下,zadd命令只会对给定成员当中已经存在于有序结合的成员进行更新,而那些不存在于有序集合的给定成员,则会被忽略。换句话说带有xx选项的zadd命令只会对有序集合已有的成员进行更新,而不会向有序集合添加任何新成员。
  • 在给定nx选项的情况下,命令只会把给定成员当中不存在于有序集合的成员添加到有序集合里面,而那些已经存在于有序集合中的给定成员则会被忽略。换句话说这有nx选项的命令只会向有序集合添加新成员,而不会对已有的成员进行任何更新。

示例,对于集合salary,执行以下命令只会将成员jack的分值从原来4000调整为4500,而命令中出现的新成员bob则不会被添加到有序集合中

如果对集合salary,执行以下命令,则只会将原先集合salary中不存在的成员bob添加到集合中,而已经存在的成员jack的分值并不会被改变。

在默认情况下,zadd命令会返回新添加成员的数量作为返回值。但是从Redis3.0.2版本开始,用户可以通过给定ch选项,让命令返回参数被修改(changed)成员的数量作为返回值。

zadd sorted-set [ch] score member [score member ...]
"被修改成员"指的是新添加的有序集合的成员以及分值被更新的成员。

示例,对于有序集合salary,执行命令 zadd salary ch 3500 peter 4000 bob 9000 david

zrange 命令为查看集合所有键值对的命令,后面会说到。通过使用zrange命令查看salary集合成员,可以看到,被修改的成员为bob和david,前者的值从3800变为了4000,后者则被添加到有序集合中。与此相反,成员peter已经存在于集合中,并且它的值已经是3500,所以命令没有对它做任何修改。


zrem:移除指定的成员

通过使用zrem命令,用户可以从有序集合中移除指定的一个或多个成员,以及这些成员关联的分值。

zrem sorted-set member [member ...]
zrem命令会返回被移除成员的数量作为返回值

示例,通过下面命令,可以删除有序集合salary中一个成员

通过执行以下命令,可以删除有序集合中两个成员


如果用户给定的某个成员并不存在于有序集合中,那么zrem命令将会自动忽略该成员。

比如,执行以下命令并不会导致salary中任何元素被移除,因为这些元素都不存在与集合中


zscore:获取成员的分值

通过使用zscore命令,用户可以获取与给定成员相关联的分值。

zscore sorted-set member

有序集合salary

示例,对于有序集合salary,可以通过zscore来获取各成员的分值情况

上图中,通过zscore获取一个成员的分值时成功了,当一次想要获取两个成员的分值时就失败了。说明,zscore命令只可以获取单成员的分值,无法一次性获取多个成员的分值。

如果用户给定的有序集合并不存在,或者有序集合中并未包含给定的成员,那么zscore命令将返回空值。


zincrby:对成员的分值执行自增或自减操作

通过使用zincrby命令,用户可以对有序集合中给定成员的分值执行自增操作或其加上指定的增量。

zincrby sorted-set increment member

zincrby命令在执行完自增操作后,将返回给定成员当前的分值

上图示例,有序集合salary中peter值为3900,只用zincrby salary 300 peter,成功将peter分值增加到4200。
因为Redis只提供了对分值执行自增操作的zincrby命令,并没有提供相对应的分值自减操作的命令。所以如果我们需要减少一个成员的分值时,那么可以将一个负数增量传递给zincrby命令,从而达到对分值执行自减操作的目的。

上图示例,给peter增加-200,即给peter分值减去200,得到结果4000。
如果用户在执行zincrby命令时,给定成员并不存在于有序集合中或者给定的有序集合并不存在,那么zincrby命令将直接把给定的成员添加到有序集合中,并把给定的增量设置为该成员的分值,效果相当于执行zadd命令。

上图中,salary中原本不存在成员liuche,通过命令zincrby salary 2000 liuche ,给liuche做分值增加,最终效果即给集合中添加(zadd salary 2000 liuche )liuche这个成员及其对应分值。

上图中,blog-visit是个不存在的有序集合,通过命令zincrby blog-visit 123456 magi1201 做增加操作,最终相当于将magi1201这个成员添加(zadd blog-visit 123456 magi1201)到集合中。


zcard:获取有序集合大小

通过执行zcard命令,用户可以获取有序集合的基数,即有序集合包含的成员数量

zcard sorted-set

上图示例中,通过zrange命令可以查看到salary集合中有5个元素,blog-visit集合中有1个元素,通过zcard命令可以获取到salary的元素个数5,获取blog-visit元素个数1。
如果给定的有序集合并不存在,那么zcard命令将返回0作为结果


zrank、zrevrank:获取成员在有序集合中的排名

通过zrank命令和或者zrevrank命令,用户可以获取给定成员在有序集合中的排名

zrank sorted-set member

zrevrank sorted-set member
其中zrank命令返回的是成员的升序排列排名及成员的按照分值,从小到大进行排列时的排名;而zrevrank命令返回的则是成员的降序排列排名及成员按照分值从大到小进行排序时的排名。有序集合中排名从0开始,最大序号为集合大小减1。

有序集合salary中各成员在zrank命令和zrevrank命令下的排名值

举个例子,上图中salary集合中各元素,通过zrank和zrevrank来获取一下排名信息

上图中,展示了zrank和zrevrank命令分别获取salary集合中元素排名情况。其中,成员bob和peter的分值都为4000,他们的排名bob在peter之前。有序集合中,如果成员分值相同,分值相同的成员之间按照字典序排列。
如果用户给定的有序集合并不存在,或者用户给定的成员并不存在于有序结合当中,那么zrank命令和zrevrank命令将会返回一个空值。


zrange、zrevrange:获取指定索引范围内的成员

通过zrange命令和zrevrange命令,用户可以以升序排列或者降序排列凡是,从有序集合中获取指定索引范围内的成员

zrange sorted-set start end

zrevrange sorted-set start end

其中zrange命令用于获取按照分值大小实施升序排列的成员;而zrevrange命令用于获取按照分值大小实施降序排列的成员。命令中start索引和end索引指定的是闭区间范围,就是说,位于start和end两个位置的成员会包含在命令返回的结果中。如果start和end相同,则获取到一个成员。

有序集合元素索引标识

依然使用salary做示例,获取salary中排名0到3的成员

取salary集合中,降序1到3的成员

下图示例,开始和结束索引均为1 的情况,则获取排名为1的一个成员。

与列表的lrange命令类似,有序集合zrange命令和zrevrange命令除了正数索引外,也可以使用负数索引。

上图示例,通过使用负数索引获取salary集合中-4到-2位置上升序的元素列表和降序的元素列表。

如果想要以升序或者降序方式获取salary有序集合的所有元素,那么只须要将起始索引设置为0,将结束索引设置为-1,然后调用zrange命令或zrevrange命令。

上图示例,分别通过zrange和zrevrange命令获取salary集合的所有元素。

如果用户给的索引超出了有效索引的范围,该如何处理,分情况:

  • 起始start和结束end索引之间无有效索引,返回空集合(empty list or set);
  • 如果起始start和结束end索引之间有有效索引位置,则Redis自动修正起始和结束索引位置,并返回有效索引范围内的成员。

上图示例中,有序集合salary中包含5个元素,其正数索引为0到4。通过zrange salary 0 10 获取0到10位置上索引时,因为10超过了有效索引4,Redis自动将10修正为4,并返回0到4位置上成员信息;通过zrange salary 11 15获取元素时,因为11和15之间不存在有效索引,所以,返回空列表 empty list or set

默认情况下,zrange命令和zrevrange命令只会返回指定索引范围内的成员,如果用户想要在获取到成员的同时也获取到与之对应的分值,那么可以在调用zrange命令或zrevrange命令的时候,给定可选的withscores选项

zrange sorted-set start end withscores

zrevrange sorted-set start end withscores

下面示例,展示如何获取有序集合中成员和其关联的分值

上面示例中,获取升序的集合所有成员和其对应的分值,其中奇数行的为成员信息,偶数行为其对应的分值信息。

如果用户给定的有序集合不存在,那么zrange命令和zrevrange命令将返回一个空列表


zrangebyscore、zrevrangebyscore:获取指定分值范围内的成员

通过使用zrangebyscore命令或zrevrangebyscore命令,用户可以升序排列或者降序排列的方式获取有序集合中分值介于指定范围内的成员。

zrangebyscore sorted-set min max

zrevrangebyscore sorted-set max min

命令的min参数和max参数分别用于指定用户想要获取的成员的最小分值和最大分值。不过需要注意的是zrangebyscore命令和zrevrangebyscore 命令能接受min参数和max参数的顺序正好相反,zrangebyscore命令先接受min参数,然后再接受max参数;而zrevrangebyscore命令则是先接受max参数后接受min参数。

依然使用salary集合做示例,以升序方式获取分值在2000到4000之间的成员

以降序方式获取5000到4000之间的成员

与zrange命令和zrevrange命令类似,zrangebyscore命令和zrevrangebyscore命令也可以通过在执行时给定可选withscores选项来同时获取成员极其分值。

上图示例,展示了zrangebyscore和zrevrangebyscore两个命令在获取成员时同时获取分值的使用。

默认情况下,zrangebyscore命令和zrevrangebyscore命令会直接返回给定分值范围内的所有成员,但如果范围内的成员数量较多,或者我们只须要范围内的其中一部分成员,那么可以使用可选的limit选项来限制命令返回的成员数量

zrangebyscore sorted-set min max [limit offset count]

zrevrangebyscore sorted-set max min [limit offset count]

limit 选项接受offset和count两个参数作为输入,其中offset参数用于指定命令在返回结果之前须要跳过的成员数量,而count参数则用于指示命令最多可以返回多少个成员。

举个例子,在salary集合中,获取分值介于3000~5000的第一个成员,可以执行如下命令

上面示例中,offset参数值为0,表示命令不须要跳过任何成员;而count参数的值为1,表示命令只须要返回1个成员结果。

如果想要以升序方式,获取分值介于3000~6000的第二个和第三个成员,可以执行如下命令

上面示例中,offset参数的值为1,表示命令须要跳过指定分值范围内的第一个成员,count参数值为2,表示命令在跳过第一个成员后,获取接下来两个成员,即指定分值范围内的第二个和第三个成员。

默认情况下,zrangebyscore命令和zrevrangebyscore命令接受的分值范围都是闭区间分值范围。即,分值等于用户给定最大分值和最小分值的成员也会被包含在结果当中。如果用户想要的是开区间而不是闭区间,可么可以在给定分值范围时,在分值参数的前面加上一个单括号 ( ,这样,具有给定分值的成员就不会出现在命令返回的结果当中。

例如,获取分值大于3000且小于5000的成员,结果中不包含3000和5000的成员

比对上面示例可以看到,在使用开区间标识符号 ( 的执行中,没有返回分值为5000的成员,而默认的不带开区间符号的执行中,返回分值为5000的成员。

zrangebyscore命令和zrevrangebyscore命令的min参数和max参数除了可以是普通分值或者带有 ( 符号的分值之外,还可以是特殊值 +inf 或者 -inf ,前缀用于表示无穷大,后者表示无穷小。当我们只想定义分值范围的上限或者下限,而不是同时定义分值范围的上限和下限时,+inf 和 -inf 就可以派上用场。

比如,如果想要获取salary有序集合中所有分值小于5000的成员,可以执行如下命令

这个命令执行中,只定义了分值范围的上限,而没有定义分值范围的下限,因此命令将返回有序集合中所有分值低于给定上限的成员。

如果我们想要获取salary有序集合中所有分值大于4000的成员,那么可以执行如下命令

上面示例中,只定义了分值下限,没有定义分值上限,因此命令将返回所有分值高于给定下限的成员。


zcount:统计指定分值范围内的成员数量

通过使用zcount命令,用户可以统计出有序集合中分值介于指定范围之内的成员数量。

zcount sorted-set min max

下面示例,展示zcount获取salary集合中,分值2000到4000的成员数量,可以辅助zrangebyscore比对,zrangebyscore获取到的数量和zcount获取到数量值应该是相同的。

zcount命令接受的分值范围格式和zrangebyscore命令接受的分值范围格式完全相同:用户可以在执行zcount命令时,使用 +inf 表示无穷大值,使用 -inf 表示无穷小值,或者使用单括号 ( 定义开区间分值范围。

举个例子,如果要获取分值小于5000的成员有多少个,则须要执行代码 zcount salary -inf (5000


zremrangebyrank:移除指定排名范围内的成员

zremrangebyrank命令可以从升序排列的有序集合中移除位于指定排名范围内的成员,然后返回被移除成员的数量

zremrangebyrank sorted-set start end

与 Redis的其他很多范围命令一样,zremrangebyrank命令接受的也是一个闭区间范围,即排名为start和end的成员也将被移除。

举个例子,移除salary中排名1到3的3个元素

删除1到3位置3个元素后,有序集合salary仅剩余2个元素了。
传给zremrangebyrank命令的排名参数除了可以是正数之外,还可以是负数。

例如,如果要删除salary中排名倒数前3的成员,只须要执行 zremrangebyrank salary -3 -1 即可。


zremrangebyscore:移除指定分值范围内的成员

zremrangebyscore命令可以从有序集合中移除位于指定分值范围内的成员,并在移除操作执行完毕返回被移除的成员的数量。

zremrangebyscore sorted-set min max

下图示例,移除分值在2000到3000范围内的成员

zremrangebyscore命令接受的分值范围与zrangebyscore命令和zcount命令接受的分值范围一样,都默认为闭区间范围,但用户可以使用  ( 符号定义开区间,或者使用 +inf 和 -inf 表示正无穷大和负无穷大。

下图示例,移除分值大于3500且小于等于4500的成员,有2个元素被移除


zunionstore、zinterstore:有序集合的并集和交集运算

用户可以通过zunionstore和zinterstore命令来操作有序集合的并集运算和交集运算。

zunionstore destination numbers sorted-set [sorted-set ...]

zinterstore destionation numbers sorted-set [sorted-set ...]

其中,命令的numbers参数用于指定参与计算的有序集合数量,之后的一个或多个sorted-set参数则用于指定参与计算的各个有序集合的键,计算得出的结果会存储到destination参数指定的键中。zunionstore命令和zinterstore命令都会返回计算结果包含的成员数量作为返回值。

举个例子,有序集合zs1 和 zs2,可以通过执行zunionstore命令计算出它们的并集,并将结果存储到zs3中

上面有序集合中,zs3中成员c的分值为zs1中和zs2中两个c的分值之和。

有序集合zs1和zs2执行zunionstore命令图示

下面看一下,如果对zs1和zs2执行并集zinterstore操作,将结果保存到zs4中

上图示例中,交集计算时,交集成员c的分值时根据zs1和zs2两个有序集合中成员c分值相加得来的。

Redis为zunionstore命令和zinterstore命令提供了可选的aggregate选项,用户可以决定使用哪个聚合函数来计算结果有序集合成员的分值。

zunionstore destination numbers sorted-set [sorted-set ...] [aggregate sum|min|max]

zinterstore destination numbers sorted-set [sorted-set ...] [aggregate sum|min|max]

aggregate选项的值可以是sum、min或者max中的一个,各聚合函数作用见下表

聚合函数 作用
sum 把给定有序集合中所有相同成员的分值都加起来,它们的和就是该成员在结果有序集合中的分值
min 从给定有序集合所有相同成员的分值中选出最小的分值,并把它用作该成员在结果有序集合中的分值
max 从给定有序集合所有相同成员的分值中选出最大的分值,并把它用作该成员在结果有序集合中的分值

举个例子,对于有序集合ss1 、ss2 和 ss3,使用sum作为聚合函数进行交集运算,将得出一个结果为12的成员 a 

结果值12 即为 2、6、4这三个值相加得出来

使用min作为聚合函数进行交集运算,将得出一个分值为2的成员a

同样,使用max作为聚合函数进行交集运算,将得到一个分值为6的成员a

在没有显式使用aggregate选项指定聚合函数的情况下,zunionstore命令和zinterstore命令默认使用sum作为聚合函数。

即以下两条并集计算命令具有相同效果:

zunionstore destination numbers sorted-set [sorted-set ...] 

zunionstore destination numbers sorted-set [sorted-set ...] aggregate sum

以下两条交集计算命令具有相同效果:

zinterstore destination numbers sorted-set [sorted-set ...] 

zinterstore destination numbers sorted-set [sorted-set ...] aggregate sum

在默认情况下,zunionstore和zinterstore将直接使用给定有序集合的成员分值去计算结果有序集合的成员分值,但是在有需要的情况下,用户也可以通过可选的weights参数为各个给定有序集合的成员分值设置权重

zunionstore destination numbers sorted-set [sorted-set ...] [weights weight [weight ...]]

zinterstore destination numbers sorted-set [sorted-set ...] [weights weight [weight ...]]

在使用weights选项时,用户须要给每个给定的有序集合分别设置一个权重,命令会将这个权重与成员的分值相乘,得出成员的新分值,然后执行聚合运算;与此相反,如果用户在使用weights选项时,不想改变某个给定有序集合的分值,那么之需要将那个有序集合的权重设置为1即可。

上图示例,通过对ss1、ss2和ss3 三个有序集合设置权重,后操作聚合函数执行交集运算,得出结果26

26的值即为 ss1中a值3乘以对应权重3,加上ss2中a值6乘以对应权重2,加上ss3中a值4乘以对应权重2 之和。

zunionstore和zinterstore除了可以使用有序集合(sorted-set)作为输入外,还可以使用集合(set)作为输入:默认情况下,这两个命令将把给定的集合看做所有成员的分值都为1的有序集合进行计算。如果有需要,用户也可以使用weights选项来改变给定集合的分值。比如,如果你希望某个集合所有成员的分值都被看做10而不是1,那么只须要在执行命令时把那个集合的权重设置为10即可。


有序集合字典序命令使用

在Redis有序集合中,对于拥有不同分值的有序集合成员来说,成员的大小将由分值决定,至于分值相同的成员,它们的大小则由该成员在字典序中的大小决定。这种排列规则的一个特例是,当有序集合中所有的成员都拥有相同的分值时,有序集合的成员将不再根据分值进行排序,而是根据字典序进行排序。在这种情况下,有序集合通用命令部分的zrangebyscore、zcount和zremrangebyscore等命令将不再适用。

为了让用户可以对字典序排列的有序集合执行类似zrangebyscore这样的操作,Redis提供了相应的zrangebyscorelex、zrevrangebylex、zlexcount和zremrangebylex命令,这些命令可以分别对字典序排列的有序集合执行升序排列的范围获取操作、降序排列的范围获取操作、统计位于字典序指定范围内的成员数量以及移除位于字典序指定范围内的成员。

为方便字典序有序集合示例操作,提供一个有序集合words,其中包含元素如下

字典序集合words

zrangebylex、zrevrangebylex:返回指定字典序范围内的成员

用户可以通过使用zrangebylex命令,从字典序排列的有序集合中获取位于指定范围内的成员

zrangebylex sorted-set min max

命令的min参数和max参数用于指定用户想要获取的字段序范围,他们的值可以是以下四种值之一:

  • 带有 [ 符号的值表示在结果中包含与指定值具有同等字典序大小的成员
  • 带有 ( 符号的值表示在结果中不包含与给定值具有同等字典序大小的成员
  • 加号 + 表示无穷大
  • 减号 - 表示无穷小

举个例子,对于字典序集合words来说,如果想要通过zrangebylex命令获取words有序集合包含的所有成员,那么只需要将min参数的值设置为-,max参数的值设置为+即可

如果想要获取words集合中所有以a开头的成员,那么只须要将min参数的值设置为 [a,max参数的值设置为 (b 即可

如果想要获取words集合中所有字典序小于字母c的成员,那么只须要将min参数的值设置为 -,max参数值设置为 (c 即可

zrevrangebylex命令是逆序版的zrangebylex命令,它会以逆字典序的方式返回指定范围内的成员

zrevrangebylex sorted-set min max

zrevrangebylex命令接受min和max的参数顺序与zrangebylex命令正好相反,zrevrangebylex命令是先接受max参数,然后再接受min参数。此外,zrevrangebylex和zrangebylex两个命令的min参数和max参数能够接受的值是完全相同的。

举个例子,通过你字典序方式返回有序集合中所有以字母a 和 b 开头的成员

上图示例中,当给逆字典序min位置为 a 时,出现命令报错,印证字典序中min参数和max参数必须是指定值的规定。


zlexcount:统计位于字典序指定范围内的成员数量

对于按照字典序排列的有序集合,用户可以使用zlexcount命令统计有序集合中位于字典序指定范围内的成员数量

zlexcount sorted-set min max

zlexcount命令的min参数和max参数的格式与zrangebylex命令接受的min参数和max参数格式完全相同

举个例子,获取有序集合words中以字母a开头的成员数量


zremrangebylex:移除位于字典序指定范围内的成员

对于按照字典序排列的有序集合,用户可以使用zremrangebylex命令移除有序集合中位于字典序指定范围内的成员

zremrangebylex sorted-set min max 

这个命令的min参数和max参数格式与zrangebylex命令以及zlexcount命令接受的min参数和max参数的格式完全相同。zremrangebylex命令在移除用户指定的成员之后,将返回被移除成员的数量作为命令的返回值。

举个例子,移除有序集合words中以字母b 开头的成员

移除后,words中仅剩余以a 和 c 开头的成员

有序集合使用总结

1、有序集合同时拥有“有序” 和 “集合”两种性质,集合性质保证有序集合只会包含各不相同的成员,而有序性质则保证了有序集合中的所有成员都会按照特定的顺序进行排列

2、在一般情况下,有序集合成员的大小由分值决定,而分值相同的成员的大小则由成员在字典序中的大小决定。

3、成员的分值除了可以是数字外,还可以是表示无穷大的 +inf 或者表示无穷小的 -inf 。

4、zadd命令,可以通过给定可选项类决定执行添加操作或是执行更新操作

5、因为Redis只提供了对成员分值执行加法计算的zincrby命令,没有提供相应的减法计算命令,所以只能通过zincrby命令传入负数增量来对成员分值执行减法计算

6、zinterstore命令和zunionstore命令除了可以使用有序集合作为输入外,还可以使用集合作为输入。在默认情况下,这两个命令会把集合的成员看作分值为1的有序集合成员来计算。

7、当有序集合的所有成员都拥有相同的分值时,用户可以通过zrangebylex、zlexcount、zremrangebylex等命令,按照字典序对有序集合中的成员进行操作,字典序有序集合命令中都有lex字样,lex为字典单词(lexico) 的简写。

 




 

 

猜你喜欢

转载自blog.csdn.net/magi1201/article/details/113796164