您的位置:首页 > 健康 > 养生 > 美国网站_安徽省六安市霍邱县疫情最新消息_如何做好企业网站的推广_优化人员配置

美国网站_安徽省六安市霍邱县疫情最新消息_如何做好企业网站的推广_优化人员配置

2024/12/23 2:26:05 来源:https://blog.csdn.net/jj666mhhh/article/details/144436627  浏览:    关键词:美国网站_安徽省六安市霍邱县疫情最新消息_如何做好企业网站的推广_优化人员配置
美国网站_安徽省六安市霍邱县疫情最新消息_如何做好企业网站的推广_优化人员配置

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:数据库

JavaEE专栏:JavaEE

软件测试专栏:软件测试

关注博主带你了解更多知识

目录

 7. Zset 有序集合

命令 

1. ZADD

2. ZRANGE

3. zcard

4. zcount

5. ZREVRANGE

6. ZRANGEBYSCORE

7. ZPOPMAX

8. BZPOPMAX

9. ZPOPMIN

10. BZPOPMIN

11. ZRANK

12. ZREVRANK

13. ZSCORE

14. ZREM

15. ZREMRANGEBYRANK

16. ZREMRANGEBYSCORE

17. ZINCRBY

集合间操作

18. ZINTERSTORE

19. ZUNIONSTORE

 8. Zset内部编码

9. 应用场景

排行榜系统

10. 渐进式遍历

scan命令渐进式遍历

11. 数据库管理

20. 切换数据库

21. 清除数据库


 7. Zset 有序集合

有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的 特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)与之关 联,着使得有序集合中的元素是可以维护有序性的,但这个有序不是⽤下标作为排序依据⽽是⽤这个分数

命令 

1. ZADD

添加或者更新指定的元素以及关联的分数到zset中

XX:仅仅⽤于更新已经存在的元素,不会添加新元素

NX:仅⽤于添加新元素,不会更新已经存在的元素

CH:默认情况下,ZADD返回的是本次添加的元素个数,但指定这个选项之后,就会还包含本次更 新的元素的个数

INCR:此时命令类似ZINCRBY的效果,将元素的分数加上指定的分数。此时只能指定⼀个元素和 分数

ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member...]

时间复杂度:O(log(N))

修改:

2. ZRANGE

返回指定区间⾥的元素,分数按照升序。带上WITHSCORES可以把分数也返回

ZRANGE key start stop [WITHSCORES]

时间复杂度:O(log(N)+M)

返回值:区间内的元素列表

3. zcard

获取⼀个zset的基数,即zset中的元素个数

 ZCARD key

时间复杂度:O(1)

返回值:zset内的元素个数

4. zcount

返回分数在min和max之间的元素个数,默认情况下,min和max都是包含的,可以通过

 ZCOUNT key min max

时间复杂度:O(log(N)) 

实际上,Zset内部会记录每个元素当前所排行的次序,查询到元素,就直接知道了元素所在的次序(下标),就可以直接把max对应的元素次序和min对应的元素次序,无需遍历

返回值:满⾜条件的元素列表个数 

5. ZREVRANGE

返回指定区间⾥的元素,分数按照降序。带上WITHSCORES可以把分数也返回

这个命令可能在6.2.0之后废弃,并且功能合并到ZRANGE中

ZREVRANGE key start stop [WITHSCORES]

时间复杂度:O(log(N)+M)

返回值:区间内的元素列表

6. ZRANGEBYSCORE

返回分数在min和max之间的元素,默认情况下,min和max都是包含的,可以通过(排除

这个命令可能在6.2.0之后废弃,并且功能合并到ZRANGE中

ZRANGEBYSCORE key min max [WITHSCORES]

时间复杂度:O(log(N)+M)

返回值:区间内的元素列表

7. ZPOPMAX

删除并返回分数最⾼的count个元素

ZPOPMAX key [count]

时间复杂度:O(log(N)*M)

返回值:分数和元素列表

8. BZPOPMAX

ZPOPMAX的阻塞版本

 BZPOPMAX key [key ...] timeout

这里的有序集合也可以视为是一个优先级队列,有的时候,也需要一个带有"阻塞功能"的优先级队列每个key都是一个有序集合,阻塞也是在集合为空的时候触发阻塞,阻塞到有其他客户端插入元素,timeout表示时间,最多阻塞多久,单位为s 

时间复杂度:O(log(N))

返回值:元素列表

9. ZPOPMIN

删除并返回分数最低的count个元素

 ZPOPMIN key [count]

时间复杂度:O(log(N)*M)

返回值:分数和元素列表

10. BZPOPMIN

ZPOPMIN的阻塞版本

BZPOPMIN key [key ...] timeout

时间复杂度:O(log(N))

返回值:元素列表

11. ZRANK

返回指定元素的排名,升序

ZRANK key member

时间复杂度:O(log(N))

返回值:排名

12. ZREVRANK

返回指定元素的排名,降序

 ZREVRANK key member

时间复杂度:O(log(N))

返回值:排名

13. ZSCORE

返回指定元素的分数

ZSCORE key member

时间复杂度:O(1)

返回值:分数

14. ZREM

删除指定的元素

ZREM key member [member ...]

时间复杂度:O(M*log(N))

返回值:本次操作删除的元素个数

15. ZREMRANGEBYRANK

按照排序,升序删除指定范围的元素,左闭右闭

ZREMRANGEBYRANK key start stop

时间复杂度:O(log(N)+M)

返回值:本次操作删除的元素个数

16. ZREMRANGEBYSCORE

按照分数删除指定范围的元素,左闭右闭

ZREMRANGEBYSCORE key min max

时间复杂度:O(log(N)+M)

返回值:本次操作删除的元素个数

17. ZINCRBY

为指定的元素的关联分数添加指定的分数值

ZINCRBY key increment member

时间复杂度:O(log(N))

返回值:增加后元素的分数 

集合间操作

18. ZINTERSTORE

用于计算多个有序集合的交集,并将结果存储在新的有序集合中

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
  • destination:结果有序集合的名称
  • numkeys:要计算交集的有序集合的数量
  • key:参与计算的有序集合的名称
  • WEIGHTS:指定每个有序集合的权重,默认权重为 1
  • AGGREGATE:指定交集结果的聚合方式,可以是 SUM(求和)、MIN(最小值)或 MAX(最大值)。默认是 SUM

时间复杂度:O(N*K)+O(M*log(M)) N是输⼊的有序集合中,最⼩的有序集合的元素个数;K是输⼊了 ⼏个有序集合;M是最终结果的有序集合的元素个数.

返回值:⽬标集合中的元素个数

19. ZUNIONSTORE

求出给定有序集合中元素的并集并保存进⽬标有序集合中,在合并过程中以元素为单位进⾏合并,元 素对应的分数按照不同的聚合⽅式和权重得到新的分数

 ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight[weight ...]] [AGGREGATE <SUM | MIN | MAX>]

时间复杂度:O(N)+O(M*log(M)) N是输⼊的有序集合总的元素个数;M是最终结果的有序集合的元素个数.

返回值:⽬标集合中的元素个数

 8. Zset内部编码

有序集合类型的内部编码有两种:

ziplist(压缩列表):当有序集合的元素个数⼩于zset-max-ziplist-entries配置(默认128个), 同时每个元素的值都⼩于zset-max-ziplist-value配置(默认64字节)时,Redis会⽤ziplist来作 为有序集合的内部实现,ziplist可以有效减少内存的使⽤

skiplist(跳表):当ziplist条件不满⾜时,有序集合会使⽤skiplist作为内部实现,因为此时ziplist的操作效率会下降

9. 应用场景

排行榜系统

ZSet非常适合用来实现各种排行榜,例如网站的文章排行、学生成绩排行、直播间礼物排名榜等。通过分数(score)来确定排名,可以轻松地添加新元素、更新排名或获取排名信息

10. 渐进式遍历

scan命令渐进式遍历

Redis 使⽤scan命令进⾏渐进式遍历键,进⽽解决直接使⽤keys获取键时可能出现的阻塞问 题。每次scan命令的时间复杂度是O(1),但是要完整地完成所有键的遍历,需要执⾏多次scan

SCAN cursor [MATCH pattern] [COUNT count]

时间复杂度:O(1)

返回值:下⼀次scan的游标(cursor)以及本次得到的键

11. 数据库管理

20. 切换数据库

select dbIndex

21. 清除数据库

flushdb / flushall 命令⽤于清除数据库,区别在于flushdb只清除当前数据库,flushall会清楚所有数 据库

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com