redis
對於排行榜的需求,redis有乙個資料結構非常適合做這件事,那就是有序集合(sorted set)。
redis的有序集合相關命令有序集合和集合一樣可以儲存字串,另外有序集合的成員可以關聯乙個分數(score),這個分數用於集合排序。下面以投票為例說明常見的命令,vote_activity是有序集合的key。
#給alice投票
redis> zincrby vote_activity 1 alice
"1"#給bob投票
redis> zincrby vote_activity 1 bob
"1"#給alice投票
redis> zincrby vote_activity 1 alice
"2"#檢視alice投票數
redis> zscore vote_activity alice
"2"#獲取alice排名(從高到低,zero-based)
redis> zrevrank vote_activity alice
(integer) 0
#獲取前10名(從高到低)
redis> zrevrange vote_activity 0
91) "alice"
2) "bob"
#獲取前10名及對應的分數(從高到低)
redis> zrevrange vote_activity 0
9 withscores
1) "alice"
2) "2"
3) "bob"
4) "1"
#獲取總參與選手數
redis> zcard vote_activity
(integer) 2
尋找熱門查詢
一 問題描述 尋找熱門查詢 搜尋引擎會通過日誌檔案把使用者每次檢索使用的所有檢索串都記錄下來,每個查詢串 的長度為1 255位元組。假設目前有一千萬個記錄,這些查詢串的重複度比較高,雖然總數是1千萬,但如果除去重複後,不超過3百萬個 乙個查詢串的重複度越高,說明查詢它的使用者越多,也就是越熱門。請你...
熱門排行榜 redis實現
最近專案架構公升級,主要對效能方面進行公升級。之前熱門排行榜是通過對點讚量,閱讀量,收藏量等一系列的資料在db通過計算查出來的,效率方面不太好。因此考慮對該功能進行公升級優化,並且新增週期性排行榜如月排行,總排行。在引入快取之後首先考慮的是通過快取實現熱門排行榜的功能,但是考慮到首次引入快取擔心快取...
實戰總結 使用Redis做模糊匹配查詢
最近在做乙個模糊匹配查詢的需求,剖析需求本質無非就是根據入參來模糊匹配相關資料進行返回展示。由於資料是儲存在資料庫的,簡單實現的話可以考慮使用db的sql來進行模糊匹配查詢,比較考量的就是如何控制你的sql以及如果能夠高效命中索引來優化sql來實現快速查詢了。由於是全查詢的業務,而且業務場景對服務響...