sorted set 資料型別的應用場景
1.簡介
在 set 的基礎上給集合中每個元素關聯了一個分數,往有序集合中插入資料時會自動根據這個分數排序。它保留了元素不能重複的特性,並且元素是有序的。
2.基本操作
zadd key score member //score是可以重複的,新增key的時候指定分數
zcard key //計算成員個數
zscore key member //計算某個成員的分數
zrank key member //計算成員排名,從低到高
zrevrank key member //計算成員排名,從高到低
zrem key member [member...] //刪除成員
zincrby key increnment member //增加成員的分數
zrange key start end [withscores] //從低到高返回指定排名的分數
zrevrange key start end [withscores] //從高到低返回
zrangebyscore key min max [withscores] [limit offset count] //按照分數從低到高返回
zrevrange score key min max [withscores] [limit offset count] //按照分數從高到低返回成員
withscore 代表返回的時候帶上成員的分數
...還有求交集,並集等操作
3.應用場景
在集合型別的場景上加入排序就是有序集合的應用場景了。
(1)根據好友的“親密度”排序顯示好友列表。
// 用元素的分數(score)表示與好友的親密度
zadd user:kobe 80 james 90 wade 85 melo 90 paul
// 根據“親密度”給好友排序
zrevrange user:kobe 0 -1
/**
* 輸出:
* 1) "wade"
* 2) "paul"
* 3) "melo"
* 4) "james"
*/
// 增加好友的親密度
zincrby user:kobe 15 james
// 再次根據“親密度”給好友排序
zrevrange user:kobe 0 -1
/**
* 輸出:
* 1) "james"
* 2) "wade"
* 3) "paul"
* 2) "melo"
*/
//類似的需求還出現在根據文章的閱讀量或點贊量對文章列表排序
(2)排行榜
實效性
從排行榜的實效性上劃分,主要分為:
-
實時榜:基於當前一段時間內資料的實時更新,進行排行。例如:當前一小時內遊戲熱度實時榜,當前一小時內明星送花實時榜等
-
歷史榜:基於歷史一段週期內的資料,進行排行。例如:日榜(今天看昨天的),周榜(上一週的),月榜(上個月的),年榜(上一年的)
業務資料型別
從需要排行的資料型別上劃分,主要分為:
-
單型別資料排行榜:是指需要排行的主體不需要區分型別,例如,所有使用者積分排行,所有公貢獻值排行,所有遊戲熱度排行等
-
多型別(複合型別)資料排行榜:是指需要排行的主體在排行中要求有型別上的區分,例如:競技類遊戲熱度排行、體育類遊戲熱度排行、MOBA類遊戲操作性排行、角色/回合/卡牌三類遊戲熱度排行等
展示唯度
從榜單的最終展示唯度上劃分,主要分為:
-
單唯度:是指選擇展示的排行榜就是基於一個唯度下的排行,例如前面提到的MOBA類遊戲操作性排行榜,就僅展示所有MOBA類遊戲按操作性的評分排行
-
多唯度:是指選擇展示的排行榜還有多種唯度供使用者選擇,仍然以前面的MOBA類遊戲為例,唯度除了操作性,還有音效評分排行,難易度評分排行,畫面評分排行等。
展示資料量
從需要展示的資料量上劃分,主要分為:
-
topN資料:只要求展示topN條排行紀錄,例如:最火MOBA遊戲top20
-
全量資料:要求展示所有資料的排行,例如:所有使用者的積分排行
相關文章
- Redis set資料型別命令使用及應用場景使用總結Redis資料型別
- String資料型別的應用場景資料型別
- redis資料型別及應用場景Redis資料型別
- Redis 資料型別及應用場景Redis資料型別
- Redis五種資料型別應用場景Redis資料型別
- redis的五種資料型別及應用場景Redis資料型別
- redis-10.sorted_set型別Redis型別
- 關於Redis資料型別以及應用場景的分析與總結Redis資料型別
- Redis 知多少 (二)---Redis 基本資料型別及常用應用場景Redis資料型別
- TypeScript 中列舉型別的理解?應用場景?TypeScript型別
- Redis中7種集合型別應用場景Redis型別
- Redis系列-資料型別及使用場景Redis資料型別
- 一文徹底搞透Redis的資料型別及具體的應用場景Redis資料型別
- list與Set、Map區別及適用場景
- 2 萬字 + 20張圖| 細說 Redis 九種資料型別和應用場景Redis資料型別
- 2 萬字 + 20張圖| 細說 Redis 九種資料型別和應用場景Redis資料型別
- Redis多種資料型別以及使用場景Redis資料型別
- 圖資料庫及應用場景資料庫
- 資料型別綜合應用資料型別
- Redis 中ZSET資料型別命令使用及對應場景總結Redis資料型別
- Redis的資料結構與應用場景Redis資料結構
- [譯] Java 資料流的不同應用場景Java
- Redis的資料結構及應用場景Redis資料結構
- NoSQL資料庫的35個應用場景SQL資料庫
- Redis 資料型別及其使用場景 String 篇Redis資料型別
- redis 五種資料型別和使用場景梳理!Redis資料型別
- 07 redis-資料型別 setRedis資料型別
- 圖資料庫有哪些應用場景?資料庫
- HTAP資料庫及應用場景分析資料庫
- 工業大資料應用場景分析大資料
- Redis 基本資料型別(Set) 的操作命令Redis資料型別
- JDBC 高階資料型別的應用JDBC資料型別
- go的 & 和 * 的區別,以及應用場景Go
- Python基本資料型別之setPython資料型別
- MySQL TEXT、DATE、SET 資料型別(轉)MySql資料型別
- 電商API原資料介面的應用場景API
- redis各資料型別應用概述Redis資料型別
- Redis學習手冊(Sorted-Sets資料型別)Redis資料型別