zrangebylex myzset - +
//这里的-相当于负无穷大,+相当于正无穷大,这个命令相当于返回key为myzset的有序集合的所有元素。
//和下面的是等价的
zrange myzset 0 -1
zrangebylex myzset (a [g
//这个中的圆括号方括号也可以推敲出来,就是开闭区间的意思,即包含还是不包含端点元素。
接下来给大家演示一下在linux中神奇的字典规则是如何让人头皮发麻的
//首先我们给有序集合添加点元素
ZADD myzset1 0 aaa 0 b 0 c 0 d 0 e
//返回Integer(5)
ZADD myzset1 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
//返回Integer(5)
//为什么写两行。没有原因,就是为了看起来整洁点,写一行看起来太长,脖子短的不方便。
ZRANGE myzset1 0 -1
//然后查看一下有序集合所有元素,它帮我们自动排序了
1) "ALPHA"
2) "aaa"
3) "alpha"
4) "b"
5) "c"
6) "d"
7) "e"
8) "foo"
9) "zap"
10) "zip"
//仔细看看就知道有序集合排序的规则了,
按照A-B,a-b的顺序进行排序,
比如ALPHA中的A在aaa中的a前面,
以及同为小a的aaa和alpha的排序,
第一个字母顺序一样,那么排第二个,前者a,后者l,
a在l前面,自然aaa在alpha前面,就是这么个顺序。
再来看一下进行字典排序的一个命令,官方例子
ZRANGEBYLEX myzset1 [alpha [omega
//我自然而然的认为[omega是偶买噶的意思
头皮发麻,这是个什么规则,看看返回结果。
1) "alpha"
2) "b"
3) "c"
4) "d"
5) "e"
6) "foo"
//稍微可以理解的就是前者,从包含alpha开始,但是结尾是什么鬼?omega???
黑人问号脸
刚开始我认为它的意思是会找有没有omega这个元素,没有的话,再找omega这个字符串的第一个元素o谁包含,o的话foo包含,所以从这里截至。
那么,如果符合我们的想法的话,继续测试下一个。
ZRANGEBYLEX myzset1 [alpha [fmaga
//结果
1) "alpha"
2) "b"
3) "c"
4) "d"
5) "e"