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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM