【Redis篇】【常用應(yīng)用場(chǎng)景】

一.緩存

熱點(diǎn)數(shù)據(jù)(經(jīng)常會(huì)被查詢,但是不經(jīng)常被修改或者刪除的數(shù)據(jù)),首選是使用redis緩存.
熱點(diǎn)數(shù)據(jù)如果沒次都需要查詢一次數(shù)據(jù)庫, 當(dāng)訪問量比較大會(huì)對(duì)數(shù)據(jù)庫造成具大壓力,故經(jīng)常被訪問的數(shù)據(jù)可以查詢一次存放入緩存, 每次查詢時(shí)先查詢緩存,如果緩存中存在直接返回.減輕數(shù)據(jù)庫壓力

注意事項(xiàng): 結(jié)合具體應(yīng)用需要注意一下:

Select 數(shù)據(jù)庫前查詢r(jià)edis,有的話使用redis數(shù)據(jù),放棄select 數(shù)據(jù)庫,沒有的話,select 數(shù)據(jù)庫,然后將數(shù)據(jù)插入redis
update或者delete數(shù)據(jù)庫錢,查詢r(jià)edis是否存在該數(shù)據(jù),存在的話先刪除redis中數(shù)據(jù),然后再update或者delete數(shù)據(jù)庫中的數(shù)據(jù)
上面這種操作,如果并發(fā)量很小的情況下基本沒問題,但是高并發(fā)的情況請(qǐng)注意下面場(chǎng)景:

為了update先刪掉了redis中的該數(shù)據(jù),這時(shí)候另一個(gè)線程執(zhí)行查詢,發(fā)現(xiàn)redis中沒有,瞬間執(zhí)行了查詢SQL,并且插入到redis中一條數(shù)據(jù),回到剛才那個(gè)update語句,這個(gè)悲催的線程壓根不知道剛才那個(gè)該死的select線程犯了一個(gè)彌天大錯(cuò)!于是這個(gè)redis中的錯(cuò)誤數(shù)據(jù)就永遠(yuǎn)的存在了下去,直到下一個(gè)update或者delete。

建議: 對(duì)Redis的數(shù)據(jù)進(jìn)行在進(jìn)行更新時(shí), 更新前與更新后都執(zhí)行一次刪除操作

二. 計(jì)數(shù)器

利用Redis是原子性操作, 可實(shí)現(xiàn)多服務(wù)共享某一個(gè)數(shù)據(jù).

例如: 分布式ID生成、點(diǎn)贊、閱讀量統(tǒng)計(jì)等場(chǎng)景

三.分布式鎖

在分布式架構(gòu)中, 一個(gè)業(yè)務(wù)ID請(qǐng)求進(jìn)入服務(wù),我們只需要其中一個(gè)服務(wù)為期服務(wù)時(shí), 或者秒殺系統(tǒng),只需要一個(gè)ID能夠獲取的商品時(shí). 這個(gè)時(shí)候可以采用Redis做到僅切只有一個(gè)人獲得服務(wù)權(quán).

String 類型setnx方法,只有不存在時(shí)才能添加成功,返回true(搶到鎖)

四.限流

當(dāng)一個(gè)用戶大量訪問頁面時(shí)候,需要控制訪問次數(shù)時(shí).
以訪問者的ip和其他信息作為key,訪問一次增加一次計(jì)數(shù),超過次數(shù)則返回false

五.分布式跨域session共享

集群模式下,在應(yīng)用不多的情況下一般使用容器自帶的session復(fù)制功能就能滿足,當(dāng)應(yīng)用增多相對(duì)復(fù)雜的系統(tǒng)中,一般都會(huì)搭建以Redis等內(nèi)存數(shù)據(jù)庫為中心的session服務(wù),session不再由容器管理,而是由session服務(wù)及內(nèi)存數(shù)據(jù)庫管理。

六.最新列表

Redis列表結(jié)構(gòu),LPUSH可以在列表頭部插入一個(gè)內(nèi)容ID作為關(guān)鍵字,LTRIM可用來限制列表的數(shù)量,這樣列表永遠(yuǎn)為N個(gè)ID,無需查詢最新的列表,直接根據(jù)ID去到對(duì)應(yīng)的內(nèi)容頁即可。

以上是個(gè)人理解常用的場(chǎng)景, 當(dāng)然Redis還可以做的事情特別多, 在這里就不一一列舉了.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容