【Redis】Zset范例常用命令
一. Zset有序聚集简介.[*] 界说: Zset(有序聚集)是Redis中的一种数据范例,它保存了聚集不能有重复成员的特点,但与普通聚集差别的是,Zset中的每个元素都与一个唯一的浮点范例的分数(score)相关联,这使得Zset中的元素可以维护有序性。
[*] 如何包管有序性: 每个元素都与一个分数相关联,分数用于确定元素在聚集中的位置,且分数可以重复。当分数雷同时,元素会根据其字典顺序进行排序。
[*] **Zset在Redis中底层的编码方式:
[*]压缩列表(ziplist):一种紧凑的数据结构,通常用于存储元素较少、元素较小的有序聚集。它以连续的内存块情势存储数据,每个节点可以包含一个或多个元素,且可以非常紧凑地存储整数和字符串等差别范例的元素。
[*]跳跃表(skiplist):一种基于链表的数据结构,通常用于存储元素较多、元素较大的有序聚集。跳跃表通过多层链表实现快速查找,其插入、删除、查找的时间复杂度均为O(logN)。
二. 添加元素相关命令.
2.1 向有序聚集中添加元素(zadd)
[*]命令根本格式:
ZADD key score member
[*]解释参数含义:
[*]NX: 当number不存在的时间才会添加对应的score-number
[*]XX: 当number存在的时间才会修改对应的score-number
[*]GT: 当更新元素的时间, 只有当给定的score比已有的score大, 才会更新成功.
[*]LT: 当更新元素的时间, 只有当给定的score比已有的score小, 才会更新成功.
[*]CH: 将返回值从添加的新元素数修改为更改的元素总数(CH是changed的缩写)。更改的元素是添加的新元素和已经存在的元素,并为其更新了分数。因此,在命令行中指定的具有与已往雷同分数的元素不会被计算在内。留意:通常ZADD的返回值只计算添加的新元素的数目
[*]INCR:当指定这个选项时,ZADD的行为类似于ZINCRBY。在这种模式下只能指定一个分数-元素对
[*]时间复杂度:
O(log(N)),其中N是排序聚集中元素的个数。
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/e8890035a8d541efade011876ce51c49.png
https://i-blog.csdnimg.cn/direct/c0dfc68d7c6446aa9986e58584f0f6a5.png
https://i-blog.csdnimg.cn/direct/db0b4007125145f88f1e2e370d88166c.png
三. 查询元素相关操纵.
3.1 查询有序聚集中的元素个数( zcard zcount)
[*]命令根本格式:
ZCARD key
ZCOUNT key min max
[*]时间复杂度:
zcard O(1)
zcount O(log(N)) N是排序聚集中元素的个数。
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/d12d14313e1844c1af551e6675e1b1c5.png
3.2 查询指定区间内的元素(zrange zrevrange zrangebyscore)
[*]命令根本格式:
ZRANGE key start stop 获取指定下标范围内的元素
ZREVRANGE key start stop 逆序获取指定下标范围内的元素
ZRANGEBYSCORE key min max 按照分数来找元素,和zcount的效果类似
[*]时间复杂度:
zrange O(log(N)+M),其中N是排序聚集中的元素个数,M是返回的元素个数。
zrevrange O(log(N)+M),其中N是排序聚集中的元素个数,M是返回的元素个数。
zrangebyscore O(log(N)+M)其中N是排序聚集中的元素个数M是返回的元素个数。如果M是常数(比方总是要求前10个元素有LIMIT),你可以认为它是O(log(N))。
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/31f90e0096c54849b8e87a42d9db1a72.png
3.3 查询有序聚集中指定成员的排名(zrank zrevrank )
[*]命令根本格式:
ZRANK key member 查询有序聚集中指定成员的排名
ZREVRANK key member 查询有序聚集中指定成员的逆序排名
[*]时间复杂度:
O(log(N))
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/d574cdaf10db452cb84258f5caf6e769.png
3.4 查询有序聚集中指定成员的分数(zscore)
[*]命令根本格式:
ZSCORE key member查询有序聚集中指定成员的分数
[*]时间复杂度:
O(1)
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/0b71ca2592ae4ff4868ab98ef60ae32b.png
四. 删除元素相关操纵.
4.1 删除并返回最大/最小的n个元素(zpopmax zpopmin)
[*]命令根本格式:
ZPOPMAX key 删除并返回最大的n个元素
ZPOPMIN key 删除并返回最小的n个元素
[*]时间复杂度:
都是 O(log(N)*M)其中N是排序聚集中的元素个数,M是弹出的元素个数。
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/7547dc8a9c764ca3817bda1560688db3.png
4.2 带有壅闭性质删除最大/小元素(bzpopmin bzpopmax)
[*]命令根本格式:
BZPOPMAX key timeout
BZPOPMIN key timeout
[*]时间复杂度:
O(log(N)) N是排序聚集中元素的个数O(log(N)) N是排序聚集中元素的个数
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/28bad9f822f24ac5997784a7e7b5b97f.png
https://i-blog.csdnimg.cn/direct/69cfee17050b44428877add1fe336883.png
4.3 删除有序聚集中的n个元素( zrem zremrangebyrank zremrangebyscore)
[*]命令根本格式:
ZREM key member 删除有序聚集中的n个元素
ZREMRANGEBYRANK key start stop 删除有序聚集中指定排名范围内的成员
ZREMRANGEBYSCORE key min max 删除有序聚集中指定分数范围内的成员
[*]时间复杂度:
zrem O(M*log(N)),其中N是排序聚集中元素的个数,M是要移除的元素的个数
zremrangebyrank O(log(N)+M),其中N是排序聚集中的元素个数,M是操纵移除的元素个数
zremrangebyscore O(log(N)+M),其中N是排序聚集中的元素个数,M是操纵移除的元素个数。
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/b0774291fd8d486d9c67e4031a3e2dc7.png
五. 聚集运算相关操纵.
5.1 求有序聚集交集的操纵(zinterstore)
[*]命令根本格式:
ZINTERSTORE destination numkeys key ]
[*]解释参数含义:
[*]destination 要把求交集的效果存储到哪个key对应的zset之中.
[*]numkeys 形貌了后续有几个key参与交集运算.
[*]weight 每个key对应的权重
[*]时间复杂度:
O(N*K)+O(M*log(M))最坏情况,其中N是最小的输入排序集,K是输入排序集的个数,M是效果排序集中元素的个数。
5.2 求聚集并集的操纵(zunionstore)
[*]命令根本格式:
ZUNIONSTORE destination numkeys key ]
[*]时间复杂度:
O(N)+O(M log(M)),其中N是输入排序集的巨细之和,M是效果排序集的元素个数。
[*]演示命令的利用:
https://i-blog.csdnimg.cn/direct/d81e9d6bae1149efa1aae13c89b99952.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]