redis中value类型-sorted_set

查看命令帮助

 

 

多数命令以z开头,我因为s开头被占用了

 

Sorted_set 已经拍好序的不重复的集合,包括:元素,分支,排名

 

添加元素和获取元素

zadd k1 8 apple 2 banana 3 orange  添加元素

拿apple举例:

apple 是元素 8是当前apple元素的分值,

插入之后会根据分值排序,打印结果来看,apple排在第三位,则排名是2

zrange k1 0 -1 withscores  这里面的0和-1指的是排名(从开始到结束)

 

 

zrangebyscore k1 3 8   按分值取

 

 zrange k1 0 1  按排名取

 

 

倒叙取两个: ZREVRANGE k1 0 1 

注意使用zrange k1 -2 -1  只是取出来最后两个,但是顺序还是按照正序排列的

 

zscore k1 apple 通过元素取分值

 

 

 

zrank k1 apple  通过元素取排名

 

 

计算操作

ZINCRBY k1 2.5 banana  将元素banana的分值增加2.5

然后分值提高后超过了orange的分值,所以排序的顺序banana排在了orange的后面

 

集合操作,并集,交集,权重/聚合指令

 

ZUNIONSTORE unkey 2 k1 k2 weights 1 0.5   加权重求并集

加权重的意思的,是两个集合里有的元素相同时,比如k1 和 k2 里面都有a原色

K1 的a的分值是80

K2 的a 的分值是60

根据k1和和k2的权重比例,1:0.5

则求并集a的分值是 80*1+60*0.5=110

注意:如果没有写权重,默认权重都是1

 

 

 

 ZUNIONSTORE unkey2 2 k1 k2 aggregate max  如果有元素重复,取分值最大的那个

 

Sorted_set的排序的原理是什么?

底层是跳跃表(skip list)

牺牲存储空间来换取查询速度

随机造层

增删改查平均值最优

猜你喜欢

转载自blog.csdn.net/yanfei464486/article/details/113915672