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"