redis 的使用 (sort set排序集合类型操作)
sort set排序集合類型
?? ?釋義:
?? ??? ?sort set 是 string 類型的集合
?? ??? ?sort set 的每個元素 都會關(guān)聯(lián)一個 權(quán)
?? ??? ?通過 權(quán)值 可以有序的獲取集合中的元素
?? ?應(yīng)用場合:
?? ??? ?獲取熱門帖子(回復(fù)量)信息:
?? ??? ?select * from message order by backnum desc limit 5;
?? ??? ?// 利用 sort set 實現(xiàn)最熱門的前 5 貼信息
?? ??? ?帖子id?? ??? ??? ?回復(fù)量(萬條)
?? ??? ?11?? ??? ??? ??? ?102
?? ??? ?12 ?? ??? ??? ??? ?141
?? ??? ?13 ?? ??? ??? ??? ?12
?? ??? ?14 ?? ??? ??? ??? ?651
?? ??? ?15 ?? ??? ??? ??? ?131
?? ??? ?16 ?? ??? ??? ??? ?256
?? ??? ?17 ?? ??? ??? ??? ?341
?? ??? ?18 ?? ??? ??? ??? ?79
?? ??? ?19 ?? ??? ??? ??? ?461
?? ??? ?20 ?? ??? ??? ??? ?101
?? ??? ?排序集合中額每個元素都是 值 權(quán) 的組合
?? ??? ?sort set 排序集合
?? ??? ?值|權(quán) ?? ?11|121 ?? ?22|484?? ?33|1089
?? ?sort set 類型操作
?? ??? ?注意:
?? ??? ?權(quán) score
?? ??? ?值 member
?? ??? ?zadd key score member
?? ??? ??? ?添加元素到集合 元素在集合中存在則更新對應(yīng) score
?? ??? ?zrem key member
?? ??? ??? ?刪除指定元素 1 表示成功 如果元素不存在 則返回 0
?? ??? ?zincrby key incr member
?? ??? ??? ?按照 incr 幅度增加對應(yīng) member 的 score 值, 返回 score 值
?? ??? ?zrank key member
?? ??? ??? ?返回指定元素在集合中的排名(下標(biāo)), 集合中元素是按 score 從小到大排序的
?? ??? ?zrevrank key member
?? ??? ??? ?返回指定元素在集合中的排名(下標(biāo)), 集合中元素是按 score 從大到小排序的
?? ??? ?zrange key start end
?? ??? ??? ?從集合中去掉指定區(qū)間的元素 返回 按 score 有序結(jié)果
?? ??? ?zrevrange key start end
?? ??? ??? ?從集合中去掉指定區(qū)間的元素 返回 按 score 逆序的
?? ??? ?zcard key
?? ??? ??? ?返回集合中元素個數(shù)
?? ??? ?zscore key element
?? ??? ??? ?返回 給定元素 對應(yīng)的 score
?? ??? ?zremrangebyrank key min max
?? ??? ??? ?刪除集合中排名在給定區(qū)間的元素 (權(quán)值有小到大排序)
?? ?eg:
?? ?sort set 排序集合 里面只有5個元素信息,
?? ?該5個元素是回復(fù)量最高每個帖子被回復(fù)的時候,
?? ?就有機會進(jìn)入該集合里面
?? ?但是 只有回復(fù)量最高的前5個帖子會存在于集合中
?? ?回復(fù)量低的時候就被刪除
?? ?// 創(chuàng)建一個 sort set 排序集合
?? ?// hostmessage 為 key, 內(nèi)部有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
?? ?// 給集合每增加一個新元素 就把權(quán)值(回復(fù)值)最低的那個元素刪掉
?? ?// 每增加一個新元素 就刪除一個舊元素
?? ?/*************************************/
?? ?// 第六個元素生成
?? ?zadd hostmasssge 116 16 // (integer) 1
?? ?// 按 權(quán) -> score 逆序的排列
?? ?zrevrange hostmassage 0 100
?? ??? ?//返回結(jié)果如下 (展示數(shù)據(jù)為:值)
?? ??? ?// 1) "15"
?? ??? ?// 2) "14"
?? ??? ?// 3) "13"
?? ??? ?// 4) "12"
?? ??? ?// 5) "16"
?? ??? ?// 6) "11"
?? ?// 刪除 集合中排名在給定區(qū)間的元素 (權(quán)值有小到大排序)
?? ?// 刪除 權(quán) 較小的數(shù)據(jù) 剩余5條
?? ?zremrangebyrank hostmassage 0 0
?? ?zrevrange hostmassage 0 100
?? ??? ?//返回結(jié)果如下 (展示數(shù)據(jù)為:值)
?? ??? ?// 1) "15"
?? ??? ?// 2) "14"
?? ??? ?// 3) "13"
?? ??? ?// 4) "12"
?? ??? ?// 5) "16"
?? ?/*********************************/
?? ?// 返回指定元素在集合中的排名(下標(biāo)),
?? ?zrank hostmassage 15 // (integer) 4
?? ?zrank hostmassage 16 // (integer) 0
?? ?// 返回 集合中的元素的個數(shù)
?? ?zcard hostmessage
?? ??? ?// (integer) 5
?? ?// 根據(jù) 值 返回 權(quán)(回復(fù)量)
?? ?zscore hostmessage 15
?? ??? ?// 返回 "182"
?? ?// 給指定的元素值 增加一些權(quán)信息
?? ?zincarby hostmessage 200 14
?? ??? ?// 返回 "362"
?? ?zrevrange hostmessage 0 100
?? ??? ?// 返回結(jié)果如下 (展示數(shù)據(jù)為:值)
?? ??? ?// 1) "14"
?? ??? ?// 2) "15"
?? ??? ?// 3) "13"
?? ??? ?// 4) "12"
?? ??? ?// 5) "16"
轉(zhuǎn)載于:https://www.cnblogs.com/laowenBlog/p/5444690.html
總結(jié)
以上是生活随笔為你收集整理的redis 的使用 (sort set排序集合类型操作)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts2相对路径解释
- 下一篇: 【转】浅析C语言的非局部跳转:setjm