新聞中心
如何評(píng)估數(shù)據(jù)適不適合放入Redis中?
如何評(píng)估數(shù)據(jù)適不適合放入Redis中?這個(gè)好像都不怎么用評(píng)估,在互聯(lián)網(wǎng)公司待了好幾年,行不行放進(jìn)去試試就行,工作這幾年時(shí)間,還沒有見過不能放入Redis的數(shù)據(jù)場(chǎng)景。下面就以個(gè)人的經(jīng)歷,簡(jiǎn)單分享一些特殊的數(shù)據(jù)場(chǎng)景和使用過程中的問題,娛樂為主,甄別借鑒。

成都創(chuàng)新互聯(lián)是專業(yè)的忠縣網(wǎng)站建設(shè)公司,忠縣接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行忠縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
在負(fù)責(zé)前臺(tái)業(yè)務(wù)時(shí),配置數(shù)據(jù)是一種很典型的數(shù)據(jù)場(chǎng)景,如 APP 首頁所加載的輪播圖、ICON跳轉(zhuǎn)信息等,這些數(shù)據(jù)屬于典型的低頻變更、高頻訪問型數(shù)據(jù),面向所有用戶請(qǐng)求響應(yīng),產(chǎn)品運(yùn)營(yíng)在配置后臺(tái)變更。我負(fù)責(zé)的業(yè)務(wù)本身訪問量也不高,PV 110w,UV 80,峰值QPS 200+,處理方案是被動(dòng)配置信息緩存,緩存時(shí)間為 5 min,產(chǎn)品運(yùn)營(yíng)配置的數(shù)據(jù)最悲觀的情況下 5 min生效,產(chǎn)品側(cè)接受,研發(fā)側(cè)實(shí)現(xiàn)簡(jiǎn)單。但在維護(hù)過程中,發(fā)現(xiàn) redis 的 key 生成規(guī)則中有當(dāng)前時(shí)間因子,導(dǎo)致該配置信息緩存永遠(yuǎn)都取不到,這種低級(jí)錯(cuò)誤讀者感覺別出心裁,也很不容易定位。幸好我們的業(yè)務(wù)并發(fā)并不高,要不然數(shù)據(jù)庫壓力就夠嗆了。
在維護(hù)頁面型業(yè)務(wù)時(shí),發(fā)現(xiàn)該業(yè)務(wù)的整個(gè)頁面進(jìn)行了緩存,定時(shí)調(diào)度每分鐘拉群上游數(shù)據(jù),結(jié)合本地 vm 模板進(jìn)行渲染,然后將選擇結(jié)果放入 redis,當(dāng)有用戶請(qǐng)求時(shí),直接返回該渲染完成的頁面html,起到快速響應(yīng)的目的。這種快速響應(yīng)用戶請(qǐng)求優(yōu)化的方式,第一次見到,很有借鑒意義,頁面的響應(yīng)優(yōu)化方面可以考慮的層面又多了一些方式。
還有一種高性能的業(yè)務(wù)場(chǎng)景,業(yè)務(wù) QPS 10w+,這種請(qǐng)求并發(fā),關(guān)系型數(shù)據(jù)庫往往無能為力,曾經(jīng)歷過以 redis 為中心,搭建整個(gè)應(yīng)用體系,用戶型數(shù)據(jù)永久存儲(chǔ),為保證數(shù)據(jù)的準(zhǔn)備性,異步消息隊(duì)列消費(fèi)入庫,數(shù)據(jù)庫中數(shù)據(jù)主要用作維護(hù)和數(shù)據(jù)備份。所有的請(qǐng)求都由 redis 反饋結(jié)果,redis中無數(shù)據(jù),就表明該用戶數(shù)據(jù)不存在,這種架構(gòu)可以輕松支撐起 10w+ 的QPS。但也不是沒有問題的,運(yùn)營(yíng)的久了,往往會(huì)出現(xiàn)數(shù)據(jù)庫和緩存的數(shù)據(jù)不一致的情況,這種時(shí)候就考慮結(jié)合數(shù)據(jù)庫中數(shù)據(jù),對(duì)緩存中數(shù)據(jù)進(jìn)行清洗和補(bǔ)償。
以上,僅是職業(yè)生涯遇到的一些特殊場(chǎng)景,處理方案或許不那么完美,但也足夠支撐業(yè)務(wù)。在開發(fā)中,著力追求技術(shù)方案完美值得肯定,但也盡量避免過度設(shè)計(jì)。在當(dāng)下這個(gè)迭代速度超快的業(yè)務(wù)和技術(shù)場(chǎng)景中,能夠支撐業(yè)務(wù)發(fā)展就是一種好的架構(gòu)設(shè)計(jì)。
作者:夕陽雨晴,歡迎關(guān)注我的頭條號(hào):偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。
判斷數(shù)據(jù)是否放入Redis的方法,我說下自己的理解。
Redis的特點(diǎn)是內(nèi)存存儲(chǔ),所以它主要適合的是獨(dú)立、速度快、適合頻繁訪問/修改、常作為快速緩存替代SQL。
什么樣的數(shù)據(jù)適合放入Redis中呢?這里沒必要扯什么數(shù)據(jù)類型、什么業(yè)務(wù)等等虛的概念。從它的特點(diǎn)中能看出,所有不適合把數(shù)據(jù)放入SQL數(shù)據(jù)庫、同時(shí)又不方便本地緩沖的場(chǎng)景數(shù)據(jù),都適合放入Redis中。
因此,如果目標(biāo)數(shù)據(jù)既需要高速緩存,又需要獨(dú)立存在于程序之外:比如防止服務(wù)重啟(包括且不限于升級(jí)、錯(cuò)誤、重啟)等造成數(shù)據(jù)丟失,或者多個(gè)服務(wù)共享此數(shù)據(jù),這時(shí)就可以放入Redis中。因?yàn)镽edis的穩(wěn)定性是可期的,同時(shí)網(wǎng)絡(luò)接口又允許多個(gè)服務(wù)器同時(shí)訪問。
因此所有要求使用Redis的場(chǎng)景,都有重要的特征,即高速和獨(dú)立存儲(chǔ)?;谶@個(gè)需求,創(chuàng)造出來的業(yè)務(wù)概念即哪些所謂的 熱點(diǎn)業(yè)務(wù)數(shù)據(jù)、高速數(shù)據(jù)鏡像、共享緩存等等,也就好理解了。
下圖就是實(shí)際業(yè)務(wù)中的一種場(chǎng)景,即為了幫SQL抗流量。重復(fù)的查詢和快速的更新由Redis抗下,而SQL只做持久化。
希望能幫到有類似問題的朋友。朋友們,望不吝賜贊??!
1:字典,配置類型的數(shù)據(jù),因?yàn)楦骂l率很低,如果這類型數(shù)據(jù)調(diào)用量比較大的話,適合放到redis
2:熱點(diǎn)數(shù)據(jù),就是每天調(diào)用量很大的數(shù)據(jù),而且更新頻率不是很大,適合放到redis
3:雖然有些業(yè)務(wù)數(shù)據(jù),每日調(diào)用量比較大,但是查詢和處理邏輯復(fù)雜,這類數(shù)據(jù)不適合放到redis
4:基礎(chǔ)數(shù)據(jù)量比較大,有多個(gè)維度的查詢,不適合放到redis
5:對(duì)調(diào)用數(shù)據(jù)不確定使用頻率怎樣的,不適合放到redis
評(píng)估數(shù)據(jù)是否適合放入Redis中需要考慮以下幾個(gè)方面:
- 數(shù)據(jù)類型:Redis支持多種數(shù)據(jù)類型,包括字符串、哈希、列表、集合和有序集合。首先需要確定數(shù)據(jù)的類型,確保它與Redis支持的數(shù)據(jù)類型相匹配。
- 數(shù)據(jù)量和內(nèi)存:Redis將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,因此需要評(píng)估數(shù)據(jù)的大小和數(shù)量,以確保Redis具有足夠的內(nèi)存來存儲(chǔ)所有數(shù)據(jù)。如果數(shù)據(jù)量很大,超過了可用的內(nèi)存容量,則不適合使用Redis。
- 數(shù)據(jù)訪問模式:Redis適用于高速讀寫操作,對(duì)于頻繁的讀取和寫入操作,Redis可以提供低延遲的響應(yīng)。如果數(shù)據(jù)需要經(jīng)常更新或者需要快速查詢,那么將其存儲(chǔ)在Redis中是合適的。
- 數(shù)據(jù)持久化需求:Redis支持持久化功能,可以將數(shù)據(jù)保存到磁盤上以便重啟后恢復(fù)。如果需要數(shù)據(jù)持久化,并要求高可靠性,Redis可以滿足這一需求。
- 數(shù)據(jù)一致性要求:Redis是內(nèi)存數(shù)據(jù)庫,如果對(duì)數(shù)據(jù)的一致性有高要求,則需要使用Redis提供的事務(wù)和持久化機(jī)制來保證數(shù)據(jù)的一致性。
- 并發(fā)訪問:如果多個(gè)客戶端同時(shí)對(duì)數(shù)據(jù)進(jìn)行訪問,需要考慮并發(fā)訪問的效率和性能。Redis提供了高效的并發(fā)訪問機(jī)制,可以滿足并發(fā)讀寫的需求。
- 數(shù)據(jù)安全性:Redis提供密碼認(rèn)證來保護(hù)數(shù)據(jù)安全,可以設(shè)置密碼來限制對(duì)數(shù)據(jù)的訪問。如果數(shù)據(jù)的安全性是關(guān)鍵考慮因素之一,Redis可以滿足這一要求。
綜上所述,評(píng)估數(shù)據(jù)是否適合放入Redis中需要綜合考慮數(shù)據(jù)類型、數(shù)據(jù)量、數(shù)據(jù)訪問模式、數(shù)據(jù)持久化需求、數(shù)據(jù)一致性要求、并發(fā)訪問和數(shù)據(jù)安全性等因素。根據(jù)具體需求和場(chǎng)景,決定是否選擇使用Redis作為數(shù)據(jù)存儲(chǔ)解決方案。
以下是一些常見的例子。
- 用戶會(huì)話數(shù)據(jù):對(duì)于需要快速讀寫和高并發(fā)訪問的用戶會(huì)話數(shù)據(jù),如用戶登錄狀態(tài)、購物車信息等,可以將這些數(shù)據(jù)存儲(chǔ)在Redis中。因?yàn)檫@些數(shù)據(jù)需要頻繁更新和查詢,并且對(duì)延遲要求較高。
- 緩存數(shù)據(jù):Redis被廣泛用作緩存解決方案,可以將經(jīng)常被訪問的數(shù)據(jù)緩存到Redis中。例如,數(shù)據(jù)庫查詢結(jié)果、計(jì)算結(jié)果、API調(diào)用結(jié)果等,可以存儲(chǔ)在Redis中,以提高讀取速度和減輕后端負(fù)載。
- 計(jì)數(shù)器和排行榜:對(duì)于需要實(shí)時(shí)計(jì)數(shù)和排名的場(chǎng)景,如文章閱讀量、點(diǎn)贊數(shù)、關(guān)鍵詞搜索熱度等,可以使用Redis的計(jì)數(shù)器和有序集合數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)。這樣可以方便地進(jìn)行增減操作和獲取排名數(shù)據(jù)。
- 任務(wù)隊(duì)列:如果有任務(wù)需要通過異步方式處理,可以使用Redis的列表數(shù)據(jù)結(jié)構(gòu)作為任務(wù)隊(duì)列。生產(chǎn)者將任務(wù)推入隊(duì)列,而消費(fèi)者則從隊(duì)列中獲取任務(wù)進(jìn)行處理。Redis提供了隊(duì)列相關(guān)的命令,支持簡(jiǎn)單可靠的任務(wù)隊(duì)列功能。
- 實(shí)時(shí)消息發(fā)布和訂閱:Redis支持發(fā)布-訂閱模式,可以用于實(shí)時(shí)消息傳遞和廣播。如果有需求需要對(duì)實(shí)時(shí)事件進(jìn)行發(fā)布和訂閱,Redis可以作為可靠的消息中間件來使用。
到此,以上就是小編對(duì)于mongodb 分頁查詢 性能的問題就介紹到這了,希望這1點(diǎn)解答對(duì)大家有用。
當(dāng)前題目:如何評(píng)估數(shù)據(jù)適不適合放入Redis中?(mongodb分頁查詢太慢如何解決)
網(wǎng)頁鏈接:http://fisionsoft.com.cn/article/dhgocjp.html


咨詢
建站咨詢
