redis的zset的zrangebylex的字典规则到底是什么鬼

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"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值