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"
轉載于:https://www.cnblogs.com/laowenBlog/p/5444690.html
總結
以上是生活随笔為你收集整理的redis 的使用 (sort set排序集合类型操作)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts2相对路径解释
- 下一篇: 【转】浅析C语言的非局部跳转:setjm