Redis的使用場景

2022-06-16 03:42:19 字數 1823 閱讀 6885

一.前言 

redis一般用於輔助現有系統,用來優化現有資料庫處理起來會效率較低的任務。本文中,會列舉一些常見的業務場景,用redis來進行優化處理。

二.場景

1.顯示最新的資料列表

比如說部落格,總是按照最新發布的時間順序進行排序,最新10條的sql如下,但這種方式的查詢,會隨著資料增加而越來越慢。

select top 10 * from table order by time desc

獲取最新資料列表的查詢方式很常見,雖然資料建立的順序肯定按時間來的,但要想查詢卻不得不做排序操作,查詢相當於過濾一下所有資料,再取10條。

類似這種場景可以使用redis來處理。簡單來說,就是用redis來做快取,把最新的資料,比如5000條資料存到redis中,那只有在查詢超過這個範圍的資料才會訪問資料庫,在這範圍裡就讀redis,提高查詢效率。

每次有人發布新的部落格,在把部落格存到資料庫後,再把這個部落格的內容存到redis中,怎麼存到hash就省略了。取出這個部落格的id,新增到redis中的list,固定從左邊push,來保證索引為0的資料是最新的資料。

lpush list id

然後對list進行裁剪,確保redis只儲存最新的5000條資料。(ps.最新5000條資料的id,查部落格詳情根據id去找之前存的hash,redis效能高,就算遍歷5000個id去找也可以接受)

ltrim list 0

4999

所以每次獲取最新部落格,或者說是在分頁列表中範圍屬於最新這5000條裡的,都可以直接查詢redis,只有超出才需要查詢資料庫。

2.排行榜

比如一些線上遊戲的排行榜,我們一般會根據分數來獲取資訊。如,得分前100名的玩家;某玩家的得分排名。

這遊戲可能有上百萬玩家,每分鐘可能有上百萬的新的得分記錄,而排行榜是需要實時更新的,這類查詢對於sql資料庫來說,效能會相當不理想。

但對redis來說,就根本不是問題,效能就是好。

跟得分相關的,我們可以用redis中的sortedset型別資料,每次新添得分記錄,在redis新增對應玩家id和得分的資料。

zadd key score userid

得到前100名和對應玩家的排名就很簡單了。

//

得分從高到低 前100名

zrevrange key 0

99//

得分從高到低,該玩家的排名

zrevrank key userid

3.新聞熱搜

有點類似於排行榜,也是要實時更新的,這個用sql資料庫實現的話,效能不太理想,redis可以很好解決。

實現思路是,首先先根據時間找最新的新聞,比如查最新的1000條新聞,使用lpush+ltrim命令,參考場景1。

然後再持續給最新的1000條新聞算分數。最後,當需要重新整理熱搜榜時,重新zadd新增列表,再算排行就好,參照場景2。

4.計數

比如部落格文章的訪問量,每次有人訪問,訪問次數就加一,當訪問量過大,sql寫入的操作就會過於頻繁,影響效能。我們可以使用redis的計數器去處理。

這個是string型別的資料,incr命令可以給這個key值自動+1。如果對應key不存在,它會建立並賦值1。如果它的value不為數字,會報錯。

incr key

三.總結

1.篇幅有限,只列舉了幾個場景,具體如何使用redis,還得看具體業務。

2.這裡的redis使用主要是輔助sql資料庫,redis是用記憶體作主儲存的,效能比較好,能夠有效優化sql資料庫查詢過慢的問題。

3.redis有多種資料型別,以及提供多種命令操作,給資料操作和查詢提供便利。

redis使用場景

最近要去面試php程式設計師,去各家招聘 看看,都要有redis方面的知識儲備。這裡寫一篇部落格,就當是對最近學習redis的一次回顧。簡單一句話介紹redis 基於記憶體的高效的key value資料庫,把資料載入到記憶體中進行處理,定期把資料儲存到硬碟進行儲存,單執行緒。redis五大資料型別 ...

redis使用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在寫龐大的sql上了,而是利用redis靈活多變的資料結構和資料操作來實現。redis常用資料型別 redis最為常用的資料型別主要有以下五種 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 ...

Redis使用場景

1 字串使用場景 a 快取功能 典型使用場景 redis作為快取層,mysql作為儲存層,絕大部分請求的資料都是從redis中獲取,由於redis具有支撐高併發的特性,所以快取通常能起到加速讀寫和降低後端壓力的作用。b 計數 c 共享session 典型應用場景 使用者登陸資訊,redis將使用者的...