redis 学习笔记(六) sorted_set数据类型
目錄
一.?sorted_set數(shù)據(jù)類型的介紹
二.sorted_set數(shù)據(jù)類型的基本操作
三.sorted_set實現(xiàn)排行榜
四.sorted_set類型的應(yīng)用場景(一)
五.sorted_set類型應(yīng)用場景(二)
? ? ? ? ? ?
一.?sorted_set數(shù)據(jù)類型的介紹
? ? ? ? ? ?新的存儲需求:數(shù)據(jù)排序有利于數(shù)據(jù)的有效展示,需要根據(jù)一種可以根據(jù)自身特征的排序方式
? ? ? ? ? ?sorted_set數(shù)據(jù)----支持排序
? ? ? ? ? ?需要的存儲結(jié)構(gòu):新的存儲模型,可以保存可排序的數(shù)據(jù)
? ? ? ? ? ?sorted_set類型:在set的存儲結(jié)構(gòu)基礎(chǔ)上添加可排序的字段
? ? ? ? ??
二.sorted_set數(shù)據(jù)類型的基本操作
? ? ? ? ? ? ? 1.添加數(shù)據(jù)
? ? ? ? ? ? ? ?zadd? key? score1? member1? score2 member2
? ? ? ? ? ? ??
? ? ? ? ? ? ? 2.獲取全部數(shù)據(jù)
? ? ? ? ? ? ? zrange? key start? ?stop? ? ?[withscores]? ? ? ? ??展示權(quán)限 正向操作 由小到大
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ??
? ? ? ? ? ? ? zrevrange? key start stop???[withscores]? ? ? ? ? ?展示權(quán)限 反向操作 由大到小
? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ?3.刪除數(shù)據(jù)
? ? ? ? ? ? ? ? ?zrem key? memeber1 [memeber2]
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? 4.sorted_set的常用操作
? ? ? ? ? ? ? ?(1)按條件操作數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ?zrangebyscore key min max [withscore] [limit] 從score 的一個范圍到另一個范圍 正序
? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? zrevrangebyscore key max? min [withscore] [limit]?從score 的一個范圍到另一個范圍? 倒敘
? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ?(2) 按條件刪除數(shù)據(jù)
? ? ? ? ? ? ? ? ? zremrangebyrank? ?key? start stop? 按索引刪除
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?zremrangebyscore key? min max 按分?jǐn)?shù)權(quán)限刪除
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?注意:
? ? ? ? ? ? ? ? ? ? ? ? ? ?min與max用于限定搜索查詢的條件
? ? ? ? ? ? ? ? ? ? ? ? ? start與stop用于限定查詢范圍,作用于索引,表示開始和結(jié)束的索引
? ? ? ? ? ? ? ? ? ? ? ? ? offset和count用于限定查詢范圍,作用于查詢結(jié)果,表示開始位置和數(shù)據(jù)總量
?
? ? ? ? ? ? ? ?5.獲取集合數(shù)據(jù)總量
? ? ? ? ? ? ? ? ? ? ? zcard key
? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? zcount key? min? max 查看score數(shù)據(jù)范圍里有多少個數(shù)據(jù)
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ?6.集合交并操作
? ? ? ? ? ? ? ? ? zinterstore? destination numkeys key [key ...]? 交集
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? zunionstore? destination numkeys? key1 [key ...]? 并集
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? 求交并集會將score權(quán)值進(jìn)行求和操作
三.sorted_set實現(xiàn)排行榜
? ? ? ? ? ? ? 排序的問題
? ? ? ? ? ? 業(yè)務(wù)場景:
? ? ? ? ? ? ? ? ? ? ? ? ? ?為所有排名的資源建立排序依據(jù)
? ? ? ? ? ? 解決方案:
? ? ? ? ? ? ? ? ? ? ? ? ? 獲取數(shù)據(jù)對應(yīng)的索引(排名)
? ? ? ? ? ? ? ? ? ? ? ? ? zrank key member
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ?zrevrank key member
? ? ? ? ? ? ? ? ? ? ? ? ?
?
? ? ? ? ? ? ? ? ? ? ? ? ?score 值獲取與修改
? ? ? ? ? ? ? ? ? ? ? ? zscore? key member
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? zincrby? key? increment member
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ?tips13:
? ? ? ? ? ? ? ? ? ? ? redis應(yīng)用于計數(shù)器組合排序功能對應(yīng)的排名
?
? ? ? ? ? sorted_set類型
? ? ? ? ? ? ? ? ? ? 1.score 保存的數(shù)據(jù)存儲空間為64位,整數(shù)范圍是? -9007199254740992~9007199254740992
? ? ? ? ? ? ? ? ? ? 2.score保存的數(shù)據(jù)也可以是一個雙精度的doubbo值,基于雙精度浮點數(shù)的特征,但可能會丟失精度
? ? ? ? ? ? ? ? ? ? 3.sorted_set底層存儲還是基于set結(jié)構(gòu)的,因此數(shù)據(jù)不能重復(fù),如果重復(fù)添加相同的數(shù)據(jù),score值將被反復(fù)覆蓋,保留最后一次修改的結(jié)果
?
四.sorted_set類型的應(yīng)用場景(一)
? ? ? ? ? ? 業(yè)務(wù)場景
? ? ? ? ? ? ? ? ?1.vip體驗,網(wǎng)站定期開啟投票討論限時進(jìn)行 sorted_set有效管理此類信息
? ? ? ? ? ??解決方案
? ? ? ? ? ? ? ? ? ? ?1.對于基于時間線限定的任務(wù)處理,將處理時間記錄為score值,利用排序功能區(qū)分處理的前后順序
? ? ? ? ? ? ? ? ? ? ?2.記錄下一個要處理的時間,當(dāng)?shù)狡诤筇幚韺?yīng)任務(wù),移除redis中的記錄,并記錄下一個要處理的時間
? ? ? ? ? ? ? ? ? ? ?3.當(dāng)新任務(wù)加入時,判定并更新當(dāng)前下一個要處理的任務(wù)時間
? ? ? ? ? ? ? ? ? ? ?4.為了提升sorted_set性能,通常將任務(wù)根據(jù)特征存儲成若干個sorted_set,例如將1小時內(nèi),1天內(nèi),1周內(nèi),一月內(nèi),季度,年度等,操作的若干任務(wù)都納入到1小時內(nèi)處理的隊列中
? ? ?
? ? ? ? ? ? ? ? ?tips14:
? ? ? ? ? ? ? ? ? ? ? ? ?redis應(yīng)用于定時任務(wù)執(zhí)行順序管理和任務(wù)過期管理
?
?
五.sorted_set類型應(yīng)用場景(二)
? ? ? ? ? ?業(yè)務(wù)場景
? ? ? ? ? ? ? ? ? ? ? ?任務(wù)/消息權(quán)重設(shè)定應(yīng)用
? ? ? ? ? ? ? ? ? ? ? ?當(dāng)任務(wù)或者消息待處理,形成任務(wù)隊列或者消息隊列時,對于高優(yōu)先級的任務(wù)要保障對其優(yōu)先應(yīng)用,如何實現(xiàn)任務(wù)權(quán)重管理,延時隊列
? ? ? ? ? ?解決方案:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對于帶權(quán)重的任務(wù),優(yōu)先處理權(quán)重高的任務(wù),采取score記錄權(quán)重即可
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?多條件任務(wù)權(quán)重設(shè)定
? ? ? ? ? ? ? ? ? 如果權(quán)重條件過多,需要對排序score值,進(jìn)行處理,保障score值能夠兼容2個或多個條件,例如
? ? ? ? ? ? ? ? ? ? 1.外貿(mào)訂單優(yōu)于國內(nèi)訂單,總裁訂單優(yōu)于員工訂單
? ? ? ? ? ? ? ? ? ? 2.因score長度受限,需對數(shù)據(jù)進(jìn)行截斷處理,尤其是時間設(shè)置小時或分鐘級可(折算后)
? ? ? ? ? ? ? ? ? ? 3.先設(shè)定訂單類被,后設(shè)定訂單發(fā)起角色類別,整個score長度必須是統(tǒng)一的,不足位補0,第一道排序規(guī)則首位不得為0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?例如 外貿(mào)101? 國內(nèi)102 經(jīng)理 004 員工 008
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?員工下的外貿(mào)單為 101008(小)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?經(jīng)理下的國內(nèi)單為 102004(大)
? ? ? ? ? ?
? ? ? ? ? ? ? ? ?tips15:
? ? ? ? ? ? ? ? ? ? ? ?redis應(yīng)用定時任務(wù)/消息隊列定時管理
? ? ? ? ? ? ? ? ? ? ??
?
?
?
?
?
?
?
?
?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ?
?
? ? ? ? ??
? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ??
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的redis 学习笔记(六) sorted_set数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取微博评论_用 pytho
- 下一篇: 2013Esri全球用户大会QA之GIS