• redis 的使用 (sort set排序集合类型操作)


    sort set排序集合类型

        释义:

            sort set 是 string 类型的集合

            sort set 的每个元素 都会关联一个 权

            通过 权值 可以有序的获取集合中的元素

        应用场合:

            获取热门帖子(回复量)信息:

            select * from message order by backnum desc limit 5;

            // 利用 sort set 实现最热门的前 5 贴信息

            帖子id            回复量(万条)

            11                102
            12                 141
            13                 12
            14                 651
            15                 131
            16                 256
            17                 341
            18                 79
            19                 461
            20                 101

            排序集合中额每个元素都是 值 权 的组合

            sort set 排序集合

            值|权     11|121     22|484    33|1089

        sort set 类型操作

            注意:

            权 score

            值 member

            zadd key score member

                添加元素到集合 元素在集合中存在则更新对应 score

            zrem key member

                删除指定元素 1 表示成功 如果元素不存在 则返回 0

            zincrby key incr member

                按照 incr 幅度增加对应 member 的 score 值, 返回 score 值

            zrank key member

                返回指定元素在集合中的排名(下标), 集合中元素是按 score 从小到大排序的

            zrevrank key member

                返回指定元素在集合中的排名(下标), 集合中元素是按 score 从大到小排序的

            zrange key start end

                从集合中去掉指定区间的元素 返回 按 score 有序结果

            zrevrange key start end

                从集合中去掉指定区间的元素 返回 按 score 逆序的

            zcard key

                返回集合中元素个数

            zscore key element

                返回 给定元素 对应的 score

            zremrangebyrank key min max

                删除集合中排名在给定区间的元素 (权值有小到大排序)

        eg:

        sort set 排序集合 里面只有5个元素信息,

        该5个元素是回复量最高每个帖子被回复的时候,

        就有机会进入该集合里面

        但是 只有回复量最高的前5个帖子会存在于集合中

        回复量低的时候就被删除

        // 创建一个 sort set 排序集合

        // hostmessage 为 key, 内部有5个元素

        zadd hostmasssge 102 11 // (integer) 1
        
        zadd hostmasssge 122 12 // (integer) 1
        
        zadd hostmasssge 142 13 // (integer) 1
        
        zadd hostmasssge 162 14 // (integer) 1
        
        zadd hostmasssge 182 15 // (integer) 1

        // 给集合每增加一个新元素 就把权值(回复值)最低的那个元素删掉

        // 每增加一个新元素 就删除一个旧元素

        /*************************************/

        // 第六个元素生成

        zadd hostmasssge 116 16 // (integer) 1

        // 按 权 -> score 逆序的排列

        zrevrange hostmassage 0 100

            //返回结果如下 (展示数据为:值)

            // 1) "15"

            // 2) "14"

            // 3) "13"

            // 4) "12"

            // 5) "16"

            // 6) "11"

        // 删除 集合中排名在给定区间的元素 (权值有小到大排序)

        // 删除 权 较小的数据 剩余5条

        zremrangebyrank hostmassage 0 0

        zrevrange hostmassage 0 100

            //返回结果如下 (展示数据为:值)

            // 1) "15"

            // 2) "14"

            // 3) "13"

            // 4) "12"

            // 5) "16"

        /*********************************/

        // 返回指定元素在集合中的排名(下标),

        zrank hostmassage 15 // (integer) 4

        zrank hostmassage 16 // (integer) 0

        // 返回 集合中的元素的个数

        zcard hostmessage

            // (integer) 5

        // 根据 值 返回 权(回复量)

        zscore hostmessage 15

            // 返回 "182"

        // 给指定的元素值 增加一些权信息

        zincarby hostmessage 200 14

            // 返回 "362"

        zrevrange hostmessage 0 100

            // 返回结果如下 (展示数据为:值)

            // 1) "14"

            // 2) "15"

            // 3) "13"

            // 4) "12"

            // 5) "16"

  • 相关阅读:
    11、sqlite
    10、正则
    9、bs4
    8、异常与import
    7、文件
    6、函数
    4、字典及集合
    3、元组
    1、python基本语法
    shell编程 15 --- shell 脚本调试技巧
  • 原文地址:https://www.cnblogs.com/laowenBlog/p/5444690.html
Copyright © 2020-2023  润新知