Redis 中Sorted Set 类型命令(命令语法、操作演示、命令返回值、时间复杂度、注意事项)

Sorted Set 类型


前面文章讲解了 Set 类型,Set 类型有一个特点,就是集合中的元素是唯一的。而 Zset 类型(Sorted Set)不同,它是一个有序集合,集合中的每一个元素是由“两个单元组成的”,分别是: 元素本身+对应的分数,依靠这个分数,就维护了集合中元素的有序性,什么意思呢,举个例子:

在三国中,每一个武将都是有武力值的,我们根据武力值就可以对武将进行一个排名,如下图:

在这里插入图片描述

在 zset 类型中,默认是按照**“升序”**的方式排列的,提供了一组获取元素分数、元素范围查询等等功能命令,下面就来介绍一些主要并且常用的命令。

zadd 命令

使用 zadd 命令往有序集合中添加元素和分数,在不指定选项的情况下,如果元素已经存在,则更新分数,如果元素不存在,则添加元素及分数

语法:zadd key [NX | XX] [GT | LT] [CH] [INCR] score member [score member…….]

NX:只能添加新元素,如果元素已经存在,则不能修改已经存在的元素

XX:只能更新已经存在元素,如果元素不存在,不能添加新元素

CH:默认情况下,zadd 返回的是本次成功添加的元素个数,但指定这个选项之后,如果只是更新了分数,那么还会把更新分数的元素给计算上

LT:当前指定的元素必须存在,并且新的分数比当前元素的分数小,才会更新

GT:当前指定的元素必须存在,并且新的分数比当前元素的分数大,才会更新

INCR:将元素的分数加上指定的分数,此时只能指定一个元素和一个分数

score member:表示要添加的元素及分数,并且可以指定多个

操作演示:

  1. 不指定任何选项

zadd key score member

返回值*:成功添加的元素个数

时间复杂度:log(N),会先查找,再加入

在这里插入图片描述

  1. 指定 nx 选项

zadd key nx score member

返回值:成功添加元素的个数

时间复杂度:log(N),会先查找,再加入

使用 nx 选项添加“赵云”,因为“赵云”存在,所以并没有对 “赵云” 这个元素进行修改

在这里插入图片描述

因为 “关羽” 不存在,所以,就可以成功添加 “关羽”

在这里插入图片描述

  1. 指定 xx 选项

zadd key xx score member

返回值:0,就算修改分数成功,也会返回 0

时间复杂度:log(N),会先查找,在加入

使用 xx 选项,添加 “曹操”,因为曹操这个元素已经存在,所以,就只会更新“分数”

在这里插入图片描述

因为 “刘备” 不存在,所以,在使用 xx 选项进行添加时,也不会成功添加

在这里插入图片描述

  1. 指定 ch 选项

zadd key ch score member

返回值:成功添加以及更新的元素个数

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值