redis中value类型为sorted_Set的一些常用命令

可以通过help命令查看一下这种数据类型有哪些命令,如下图:

一.ZADD:添加元素。

这里面关于元素的添加,不单是元素还包含改元素在需要哪个维度排序对应的分值。比如一个水果合集,包含苹果、香蕉、梨,希望在价格方面做一下排序,苹果4块钱,香蕉10块钱,梨6块钱,这个时候应该如下添加:

二.ZREVRANGE:反向排序显示

显示如下:

问题:价格由低到高,显示前两种水果。

方案:有如下两种展示方式,按照之前设定的值,应该显示为苹果、梨。这里的原因是物理内存是左小右大的,该链表底层存储的顺序为苹果、梨、香蕉。正向取是从苹果开始取前两个,反向取是从香蕉开始取后两个,所以得出的顺序不一致,反向取的是不对。

三.ZRANGEBYSCORE:显示满足指定范围分值的元素

简单举例如下,包括边界值

 

四.ZSCORE:显示指定元素的分值

五.ZRANK:显示指定元素的排名(从0开始)

六.ZINCRBY:给元素的分值增加指定值

 简单举例如下,要增加的值 在元素前:

七.ZUNIONSTORE:集合操作

因为是多维的集合,所以在进行集合操作的时候,要注意权重和聚合指令,这里只用ZUNIONSTORE做一下简单举例

1.先创建两个集合:

2.然后取两个集合的合集,不指定权重和聚合指令,可以发现默认权重都是1,默认的聚合指令为sum:

3.再次取两个集合的合集,这次指定权重,但不指定聚合指令。lisi期中80分,期末60分,按照期中权重0.5和期末权重1来计算,80*0.5+60*1=100。

4.再次取两次集合的合集,这次指定权重和聚合指令。lisi期中80分,期末60分,按照期中权重0.5和期末权重1来计算,MAX(80*0.5,60*1)=60

 

=========================================================================================

sorted_set的底层是通过的skiplist(跳跃表)实现的。牺牲了一部分存储空间来换取查询速度。

在有很多元素的增删改操作时,跳跃表的平均值是比较稳定的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值