婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 從一個(gè)小需求感受Redis的獨(dú)特魅力(需求設(shè)計(jì))

從一個(gè)小需求感受Redis的獨(dú)特魅力(需求設(shè)計(jì))

熱門標(biāo)簽:一個(gè)地圖標(biāo)注多少錢 南京手機(jī)外呼系統(tǒng)廠家 地圖標(biāo)注工廠入駐 四川穩(wěn)定外呼系統(tǒng)軟件 b2b外呼系統(tǒng) 臺(tái)灣電銷 高碑店市地圖標(biāo)注app 廊坊外呼系統(tǒng)在哪買 400電話辦理的口碑

分享一個(gè)簡(jiǎn)單的小需求應(yīng)該怎么設(shè)計(jì)實(shí)現(xiàn)以及有關(guān)Redis的使用

Redis在實(shí)際應(yīng)用中使用的非常廣泛,本篇文章就從一個(gè)簡(jiǎn)單的需求說起,為你講述一個(gè)需求是如何從頭到尾開始做的,又是如何一步步完善的。之前寫過一篇《如何實(shí)現(xiàn)頁(yè)面廣告隨時(shí)上下線、過期自動(dòng)下線及到時(shí)自動(dòng)上線》,也涉及到了Redis在項(xiàng)目中的實(shí)際應(yīng)用,有興趣的可以看一下。

需求

設(shè)定,現(xiàn)在我們有一個(gè)APP,產(chǎn)品新提出一個(gè)叫“程序員樹洞”的功能,具體功能就不說了,其中這個(gè)功能有一點(diǎn)需要做的是在使用該功能時(shí),如果是首次進(jìn)入會(huì)展示一個(gè)協(xié)議頁(yè)面,用戶需要勾選后點(diǎn)確定才能進(jìn)入功能,此后再進(jìn)該功能,不再顯示協(xié)議頁(yè)直接進(jìn)入該功能。如下圖所示,

原型圖

需求分析

需求就是這么的簡(jiǎn)單,我們來分析一下。

1、用戶點(diǎn)擊該功能時(shí)前端需要知道該給用戶顯示哪個(gè)頁(yè)面,這一步需要請(qǐng)求后端接口,后臺(tái)告訴前端這個(gè)用戶有沒有同意過協(xié)議。

2、用戶勾選協(xié)議點(diǎn)確定,后端需要記錄這步操作(記錄用戶已經(jīng)同意協(xié)議),這一步需在點(diǎn)確定時(shí)前端請(qǐng)求后端接口。

概要設(shè)計(jì)

前面需求分析里說了,后端需要告訴前端用戶有沒有統(tǒng)一過協(xié)議,所以后端需要把這個(gè)信息記錄下來,最好是記錄到數(shù)據(jù)庫(kù)保存,那就需要一張表來記錄同意過協(xié)議的用戶。表結(jié)構(gòu)大致是:id,客戶號(hào),插入時(shí)間。

詳細(xì)設(shè)計(jì)

1、記錄客戶是否已同意過協(xié)議并提供查詢功能(查詢是否同意過協(xié)議)

2、沒有同意過的和同意過的用戶信息怎么存儲(chǔ)

3、如何高效的查詢是否同意過

4、怎么保證高并發(fā)下服務(wù)的可用性,數(shù)據(jù)庫(kù)的可用性

功能實(shí)現(xiàn)

后端提供兩個(gè)接口,

1、hasAgree(),查詢?cè)撚脩羰欠褚淹鈪f(xié)議

2、recordAgree(),記錄用戶已同意協(xié)議

第一版 Just DB

很容易嘛!不就是CRUD嗎,小意思。用戶進(jìn)來先查數(shù)據(jù)庫(kù)有沒有記錄,沒有返回用戶沒有同意過協(xié)議,前端給用戶展示協(xié)議頁(yè),否則展示功能頁(yè);用戶點(diǎn)同意后,后臺(tái)記錄用戶已點(diǎn)了同意協(xié)議,記錄到庫(kù)。一個(gè)查詢一個(gè)插入,5分鐘搞定嘛。

直接甩代碼

第一版代碼如上,我覺得剛?cè)腴T的程序員都能夠?qū)懗鰜?。如果用戶量不大,該功能的點(diǎn)擊量不大的話,這么做還是勉強(qiáng)說得過去。為什么說勉強(qiáng)說得過去,因?yàn)榇嬖陔[患,你看啊如果每次點(diǎn)擊都會(huì)去查庫(kù),假如有人惡意攻擊,仿造高并發(fā),瞬時(shí)大量請(qǐng)求過來都去查庫(kù),很可能數(shù)據(jù)庫(kù)頂不住就掛了。或者就算數(shù)據(jù)庫(kù)沒掛,每次查庫(kù)也都是浪費(fèi)啊。所以這是個(gè)隱患,或者潛在的危險(xiǎn),那么第二版我們就去解決這個(gè)問題。

第二版 引入Redis緩存

考慮到每次查庫(kù)很浪費(fèi),那我們使用緩存好不好? 進(jìn)來先查緩存有沒有對(duì)應(yīng)的數(shù)據(jù),緩存里有就直接返回,沒有則查庫(kù),庫(kù)里有就存緩存。這樣redis就分擔(dān)了一部分?jǐn)?shù)據(jù)庫(kù)的壓力。

 

代碼呈上

這一版好一點(diǎn)了,部分請(qǐng)求分?jǐn)偟絩edis了,減輕了數(shù)據(jù)庫(kù)的壓力。

第三版 解決緩存穿透

隨著客戶量的增加,點(diǎn)擊這個(gè)功能的次數(shù)、頻率越來越高,假如有人頻繁點(diǎn)擊該功能,彈出協(xié)議后,退出,再點(diǎn),再退出…就是不點(diǎn)確定

 

這樣會(huì)有啥問題?

這樣的話后臺(tái)緩存中沒有,數(shù)據(jù)庫(kù)中也沒有,每次都會(huì)走數(shù)據(jù)庫(kù),繞過了緩存,直接都走數(shù)據(jù)庫(kù),這類請(qǐng)求量多了也是個(gè)問題,這就是緩存穿透。所以第三版,我們來解決緩存穿透的問題。

 

解決緩存穿透:因?yàn)槭菙?shù)據(jù)庫(kù)和緩存都沒有,我們可以讓數(shù)據(jù)庫(kù)沒有的也存到redis。需要改變r(jià)edis的數(shù)據(jù)類型,由set改為map,目的是記錄狀態(tài)值。

可以看到,我們的這個(gè)key-field-value沒有設(shè)置過期時(shí)間,因?yàn)榭梢哉J(rèn)為這個(gè)key是一個(gè)熱點(diǎn)key,對(duì)于熱點(diǎn)key我們的處理方式是,永久有效或過期時(shí)間盡量長(zhǎng)一點(diǎn)。

第四版 緩存預(yù)熱防止緩存擊穿

另一個(gè)關(guān)于緩存的問題,那就是緩存擊穿。

何為緩存擊穿?假如該功能在前期宣傳力度比較大,或預(yù)計(jì)該功能上線后點(diǎn)擊量比較大的話,那么在功能上線后很可能就會(huì)一瞬間大量用戶來點(diǎn)擊這個(gè)功能,因?yàn)槲覀兦懊娴倪壿嬍鞘状芜M(jìn)入該功能的用戶展示協(xié)議頁(yè),我們的后臺(tái)處理雖然加了redis緩存,但是新上的功能所有用戶都沒有點(diǎn)過,那么redis里就沒有緩存,是不是所有用戶的請(qǐng)求都落到數(shù)據(jù)庫(kù)了?一旦瞬間流量非常大,數(shù)據(jù)庫(kù)安全性就存在隱患,有被搞垮的可能。

 

這個(gè)問題就是可以理解為緩存擊穿。(實(shí)際的緩存擊穿是某個(gè)key在緩存里不存在或是失效后,某一瞬間很多請(qǐng)求都來訪問這個(gè)key,都判定為redis里沒有這個(gè)key,就都去查庫(kù)。)

所以怎么解決呢?我們可以在該功能上線前,提前將需要做緩存的數(shù)據(jù)放入redis,即緩存預(yù)熱。

如何預(yù)熱?將所有用戶的信息都放到redis.舉個(gè)栗子(也許不是最佳的),我們使用Redis的hash數(shù)據(jù)結(jié)構(gòu),key-field-value。key我們可以固定一個(gè)字符串如coderTreeHole_Agreement_Check,field我們可以用客戶號(hào)(唯一),value是個(gè)標(biāo)志位,用0代表沒同意過協(xié)議,1代表同意過。一般在電商大促前都會(huì)對(duì)熱點(diǎn)key進(jìn)行預(yù)熱,不然真的扛不住。

 

and,用戶量很大的時(shí)候redis里的coderTreeHole_Agreement_Check這個(gè)key是不是很大?在redis集群部署模式下,這個(gè)key是不是都放在一個(gè)節(jié)點(diǎn)上?why?

redis3.0上加入了cluster模式,實(shí)現(xiàn)的redis的分布式存儲(chǔ),也就是說每臺(tái)redis節(jié)點(diǎn)上存儲(chǔ)不同的內(nèi)容。在redis的每一個(gè)節(jié)點(diǎn)上,都有這么兩個(gè)東西,一個(gè)是插槽(slot),它的的取值范圍是:0-16383。還有一個(gè)就是cluster,可以理解為是一個(gè)集群管理的插件。當(dāng)我們的存取的key到達(dá)的時(shí)候,redis會(huì)根據(jù)crc16的算法得出一個(gè)結(jié)果,然后把結(jié)果對(duì)16384求余數(shù),這樣每個(gè)key都會(huì)對(duì)應(yīng)一個(gè)編號(hào)在0-16383之間的哈希槽,通過這個(gè)值,去找到對(duì)應(yīng)的插槽所對(duì)應(yīng)的節(jié)點(diǎn),然后直接自動(dòng)跳轉(zhuǎn)到這個(gè)對(duì)應(yīng)的節(jié)點(diǎn)上進(jìn)行存取操作。

看了上面這段話,明白了吧。那對(duì)于這個(gè)大key而且是熱點(diǎn)key的請(qǐng)求,是不是都落到某一個(gè)redis節(jié)點(diǎn)上了?大key會(huì)帶來很多問題,篇幅原因以后再來細(xì)說,跑題了。。。

針對(duì)這個(gè)需求,你還有什么方法防治緩存擊穿?

第五版 消息隊(duì)列削峰填谷

可以看到我們上面的設(shè)計(jì)其實(shí)都是實(shí)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的。

例如,當(dāng)用戶點(diǎn)了同意,前端就調(diào)后臺(tái)的recordAgree方法將該記錄記錄到數(shù)據(jù)庫(kù),即這條記錄是立馬插入到數(shù)據(jù)庫(kù)的。

如果剛上線這個(gè)功能,大量用戶同時(shí)點(diǎn)這個(gè)功能,并發(fā)量大的話,請(qǐng)求走到后臺(tái),那么寫庫(kù)的操作就非常多,數(shù)據(jù)庫(kù)連接數(shù)突然激增,數(shù)據(jù)庫(kù)會(huì)頂不住吧。

所以為避免流量集中落到數(shù)據(jù)庫(kù),此時(shí)我們可以使用消息隊(duì)列MQ。將插入操作的請(qǐng)求發(fā)往消息隊(duì)列,使插入操作以一定的速率到數(shù)據(jù)庫(kù)執(zhí)行,使得對(duì)數(shù)據(jù)庫(kù)的請(qǐng)求數(shù)盡量平滑,消息發(fā)給消息隊(duì)列立即返回給前端成功,不用等待插庫(kù)完成,用MQ實(shí)現(xiàn)了異步解耦,削峰填谷。

到這你是不是忍不住說設(shè)計(jì)的真贊~~

另外MQ的使用注意的點(diǎn)還是非常多的,如:消息隊(duì)列的消息重復(fù)消費(fèi)問題,順序問題,事務(wù)消息等。

總結(jié)

對(duì)于這個(gè)需求設(shè)計(jì)到哪種程度取決于你的用戶量和并發(fā)量,如果是像雙十一那樣,肯定是要用消息隊(duì)列的,那一般小的例如,用戶量1千萬,日活10萬,請(qǐng)求最集中的也就是中午9-12點(diǎn),下午13-17點(diǎn)吧,差不多8個(gè)小時(shí),平均一個(gè)小時(shí)1.25萬,用戶都來點(diǎn)這個(gè)功能的話,每分鐘208,每秒3.5,算不上高并發(fā),數(shù)據(jù)庫(kù)完全扛得住。

總結(jié)一下,這個(gè)需求我們用到的知識(shí)點(diǎn)(敲黑板),redis數(shù)據(jù)緩存,redis緩存穿透,緩存擊穿,熱點(diǎn)key問題,redis大key問題(沒具體講),消息隊(duì)列異步解耦等。

畫圖碼字不易,如果覺得我寫的還可以,記得點(diǎn)贊鼓勵(lì)一下哦,如果覺得有問題歡迎指正。

好了,就給大家介紹這么多。

您可能感興趣的文章:
  • CentOS系統(tǒng)下Redis安裝和自啟動(dòng)配置的步驟
  • Python使用Redis實(shí)現(xiàn)作業(yè)調(diào)度系統(tǒng)(超簡(jiǎn)單)
  • Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)
  • CentOS Linux系統(tǒng)下安裝Redis過程和配置參數(shù)說明
  • 讓Redis在你的系統(tǒng)中發(fā)揮更大作用的幾點(diǎn)建議

標(biāo)簽:甘南 伊春 拉薩 南寧 定州 畢節(jié) 河源 泰州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《從一個(gè)小需求感受Redis的獨(dú)特魅力(需求設(shè)計(jì))》,本文關(guān)鍵詞  從,一個(gè),小,需求,感受,Redis,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《從一個(gè)小需求感受Redis的獨(dú)特魅力(需求設(shè)計(jì))》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于從一個(gè)小需求感受Redis的獨(dú)特魅力(需求設(shè)計(jì))的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美午夜在线一二页| 久久国产麻豆精品| 性做久久久久久久免费看| 天堂资源在线中文精品| 国产精品自拍一区| 日韩欧美成人午夜| 欧美一区二区黄色| 国产麻豆午夜三级精品| 一色桃子久久精品亚洲| 精品国产乱码久久久久久免费| 亚洲蜜臀av乱码久久精品| 日韩色视频在线观看| 国产一区二区视频在线| 久久国产人妖系列| 538prom精品视频线放| 亚洲男同性恋视频| 欧美最新大片在线看| 亚洲丝袜美腿综合| 成人黄色软件下载| 久久综合久久综合九色| 亚洲在线视频网站| 91成人在线精品| 亚洲欧美aⅴ...| 欧美亚洲国产bt| 天天操天天色综合| 欧美mv日韩mv国产网站| 久久成人av少妇免费| 精品奇米国产一区二区三区| 久久99久久精品欧美| 国产精品情趣视频| 欧美日韩在线播放一区| 久久久久国产一区二区三区四区 | 99久久精品免费看国产免费软件| 久久精品国产99国产| 成人av在线电影| 一区二区三区在线视频免费观看| 欧美午夜精品一区二区蜜桃 | 欧美亚洲禁片免费| 国产成人丝袜美腿| 国产精品人妖ts系列视频| 欧美日韩国产美| 91久久精品一区二区二区| 91免费视频网址| 91丨porny丨首页| 欧美色网一区二区| 国产精品资源在线看| 九一九一国产精品| 免费在线一区观看| 麻豆国产精品777777在线| 国产自产v一区二区三区c| 国产另类ts人妖一区二区| 蜜乳av一区二区| 久久久亚洲精华液精华液精华液| 青青草一区二区三区| 26uuu国产日韩综合| 亚洲国产精品一区二区久久| 国产成人精品亚洲午夜麻豆| 欧美tickle裸体挠脚心vk| 激情综合亚洲精品| 国产区在线观看成人精品 | 国产欧美视频一区二区| 亚洲国产精品一区二区久久 | 在线观看视频欧美| 欧美二区三区91| 精品国内二区三区| 亚洲国产精品久久人人爱| 美女高潮久久久| 欧美人与禽zozo性伦| 亚洲午夜羞羞片| 99re这里都是精品| 久久综合九色综合久久久精品综合 | 欧洲一区二区三区在线| 欧美刺激脚交jootjob| 亚洲v中文字幕| 欧美日韩国产美| 国产精品国产三级国产普通话99| 亚洲伊人伊色伊影伊综合网| 91女厕偷拍女厕偷拍高清| 国产欧美精品一区二区三区四区| 欧美aaaaa成人免费观看视频| 欧美日韩国产天堂| 视频一区欧美日韩| 日韩欧美电影一区| 国内精品不卡在线| 宅男噜噜噜66一区二区66| 亚洲福利一区二区| 欧美区一区二区三区| 亚洲3atv精品一区二区三区| 欧洲一区二区三区在线| 天堂av在线一区| 日韩一区二区三区在线| 激情小说亚洲一区| 亚洲一区二区在线观看视频| 欧美日韩色综合| 狠狠色丁香久久婷婷综| 欧美性受xxxx| 丁香啪啪综合成人亚洲小说| 亚洲精品中文字幕乱码三区 | 蜜臀va亚洲va欧美va天堂 | 亚洲国产精品ⅴa在线观看| 白白色亚洲国产精品| 奇米综合一区二区三区精品视频| 国产精品成人一区二区艾草| 6080午夜不卡| 日韩欧美一区电影| 欧美高清激情brazzers| 欧美精品日韩综合在线| 欧美一区二区免费| 精品久久久久香蕉网| 精品久久久久久久久久久久久久久久久 | 亚洲国产成人av网| 韩国女主播一区| 日韩激情在线观看| 日韩综合在线视频| 亚洲第一在线综合网站| 亚洲高清免费观看高清完整版在线观看 | 国产校园另类小说区| 日韩一区二区精品在线观看| 欧美日韩国产精品自在自线| 91免费看视频| 欧美在线一二三四区| 欧美人牲a欧美精品| 欧美少妇一区二区| 欧美一级黄色录像| 日韩欧美激情四射| 日本一区二区动态图| 最好看的中文字幕久久| 亚洲一区二区在线免费看| 亚洲免费在线观看视频| 日韩精品91亚洲二区在线观看| 免费观看91视频大全| 国产成人精品网址| 在线一区二区视频| 欧美高清hd18日本| 国产午夜精品一区二区三区四区| 精品国产免费一区二区三区四区 | 卡一卡二国产精品| 激情六月婷婷综合| 99re6这里只有精品视频在线观看| 国产成人免费在线观看| 色94色欧美sute亚洲13| 久久久三级国产网站| 五月天一区二区| 91视频在线观看| 亚洲码国产岛国毛片在线| 黑人巨大精品欧美一区| 日韩欧美一级在线播放| 亚洲高清在线精品| 色综合久久中文综合久久97| 26uuu精品一区二区在线观看| 一区二区三区四区五区视频在线观看| 国产精品一区二区久激情瑜伽 | 国内精品自线一区二区三区视频| 91尤物视频在线观看| 亚洲视频一区在线| 一本久道中文字幕精品亚洲嫩| 精品福利av导航| 91网上在线视频| 亚洲卡通欧美制服中文| 欧美日韩综合一区| 亚洲v中文字幕| 精品捆绑美女sm三区| 老司机精品视频在线| 4438x亚洲最大成人网| 国产精品一卡二卡| 国产精品视频看| 欧美日韩二区三区| 日韩avvvv在线播放| 日韩美女天天操| 色乱码一区二区三区88| 国产在线播放一区三区四| 欧美日韩二区三区| 99综合影院在线| 日韩电影在线观看网站| 亚洲人成网站精品片在线观看| 欧美老女人第四色| 97久久精品人人做人人爽50路| 麻豆成人久久精品二区三区小说| 亚洲三级免费观看| 亚洲国产精品av| 日韩精品一区二区三区老鸭窝| 国产成人av一区二区三区在线 | 成人国产视频在线观看| 美女视频免费一区| 亚洲高清免费观看高清完整版在线观看 | 中文字幕中文字幕一区二区| 欧美刺激午夜性久久久久久久| 欧美视频一二三区| 成人高清视频免费观看| 国产99久久久国产精品免费看| 日韩国产欧美三级| 婷婷中文字幕综合| 午夜精品久久久久久久久| 综合中文字幕亚洲| 亚洲另类春色国产| 三级欧美在线一区| 国产盗摄一区二区| 欧美色涩在线第一页| 在线成人午夜影院| 国产日韩欧美综合在线|