初识Redis——sorted set数据类型

270 阅读2分钟

「这是我参与2022首次更文挑战的第22天,活动详情查看:2022首次更文挑战」。

前言

大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍Redis的sorted set数据类型使用。

sorted set类型

sorted set也是集合类型,和set不同的是,sorted set通过每一个数据关联一个double类型的score来确定排序的效果,从而达到集合有序。

基本操作

  1. 添加数据

    zadd key score1 member1 score2 member2
    

    score决定了排序的效果。

    image-20220222102108851

  2. 获取数据

    按照升序查看,如果又withscores参数,则会在显示时同时显示score的值。
    zrange key start stop [withscores]
    按照降序查看
    zrevrange key start stop [withscores]
    

    image-20220222102242748

    image-20220222102324261

  3. 删除数据

    zrem key member1 ...
    

    image-20220222102350477

    返回删除的的个数。

  1. 通过条件查询 查询socre值在[min,max]区间的数据,可以使用limit来限制查询数量 offset时开始位置,count是查询总量。 如果使用(min max则表示区间为(min,max] ,(min (max 则表示区间为(min,max)
    zrangebyscore key min max [withscores] [limit offset count]
    ​
    倒序查询
    zrevrangebyscore key max min [withscores]
    

image-20220222104221963

image-20220222104359656

image-20220222104442842

  1. 通过条件删除

    根据索引顺序删除
    zremrangebyrank key start stop
    ​
    根据score范围删除
    zremrangebyscore key min max
    

    image-20220222115447839

    image-20220222115534980

  1. 获取数据个数

    获取全部数据个数
    zcard key
    获取指定score范围内的数据个数
    zcount key min max
    

    image-20220222115842124

    image-20220222115904082

  2. 集合交、并后存储到指定集合

    numkeys决定求交集或并集的数量

交集,默认情况下结果集中的score值是各集合相加的结果,通过sum、min、max可以来指定最后结果集中的score值。是相加还是最小值,或者是最大值。

```
zinterstore destination numkeys key1 key2 ... [aggregate sum|min|max]
并集
zunionstore destination numkeys key1 key2...
```

image-20220222120412481

image-20220222120502010

image-20220222120616531

扩展操作

  1. 获取数据的位置,从0开始

    从小到大获取
    zrank key member
    从大到小获取
    zrevrank key member
    

    image-20220222123535385

    image-20220222123605736

  2. 获取和修改score值

    获取score值
    zscore key member
    修改score值,增加或减少指定的值
    zincrby key increment member
    

    image-20220222123809024

小结

以上就是关于redis的最后一个数据类型sorted set的使用,希望能对读者有所帮助,如有不正之处,欢迎留言指正。