掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
1:字典,配置類型的數(shù)據(jù),因為更新頻率很低,如果這類型數(shù)據(jù)調(diào)用量比較大的話,適合放到redis

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認真做好每個細節(jié),不斷完善自我,成就企業(yè),實現(xiàn)共贏。行業(yè)涉及紙箱等,在網(wǎng)站建設(shè)公司、全網(wǎng)整合營銷推廣、WAP手機網(wǎng)站、VI設(shè)計、軟件開發(fā)等項目上具有豐富的設(shè)計經(jīng)驗。
2:熱點數(shù)據(jù),就是每天調(diào)用量很大的數(shù)據(jù),而且更新頻率不是很大,適合放到redis
3:雖然有些業(yè)務(wù)數(shù)據(jù),每日調(diào)用量比較大,但是查詢和處理邏輯復(fù)雜,這類數(shù)據(jù)不適合放到redis
4:基礎(chǔ)數(shù)據(jù)量比較大,有多個維度的查詢,不適合放到redis
5:對調(diào)用數(shù)據(jù)不確定使用頻率怎樣的,不適合放到redis
非常有興趣回答這個問題。
Redis是目前最為流行的分布式緩存的解決方案,其憑借其出色的性能深受大家的歡迎。雖然Redis自身也提供了發(fā)布/訂閱相應(yīng)的功能,不過相對緩存來說,受歡迎程度就不那么高了。接下來,我來回答題主問題,說明樣的數(shù)據(jù)適合放入Redis中(可以延伸到:何種類型的數(shù)據(jù)適合進行緩存處理)。
一、靜態(tài)數(shù)據(jù)
最常見的就是各種參數(shù)、字典,這類數(shù)據(jù)往往在維護后數(shù)據(jù)量就恒定了,而且在系統(tǒng)運行過程中基本都是查詢類型的操作。
在緩存算法方面,因為其數(shù)據(jù)量比較固定,而且不需要有過期的設(shè)定,所以這類數(shù)據(jù)不需要對其緩存算法(FIFO/LFU/LRU)有過多的要求,存下來就可以了。
在緩存策略方面,通常會選擇Cache-Aside作為這類數(shù)據(jù)的緩存策略,應(yīng)用有限讀取緩存中的數(shù)據(jù),如果數(shù)據(jù)不存在則從數(shù)據(jù)庫中進行讀取,讀取后同步到緩存當中(在應(yīng)用程序中通常會通過面向切面的方式來實現(xiàn))。但是Cache-Aside并不能確保緩存和數(shù)據(jù)庫的一致性(AB線程在查詢數(shù)據(jù)庫時數(shù)據(jù)發(fā)生了改變,導(dǎo)致A線程拿到的是a數(shù)據(jù),B線程拿到的是b數(shù)據(jù),那么很難保證AB線程最后put到緩存中的數(shù)據(jù)是最后更新的數(shù)據(jù))。此外,通常會在應(yīng)用啟動時或提供人工操作的功能進行緩存預(yù)熱,來防止緩存穿透。
二、臨時數(shù)據(jù)
這一類數(shù)據(jù)最大的特點是時效性很強,并且不需要進行持久化。我們常見的Session、Token、以及各種驗證碼等。
在緩存算法方面,沒有過多要求(緩存算法基本都是在空間恒定的情況下并且有優(yōu)先順序才會討論的),但是需要考慮Redis分配內(nèi)存的大小,必要時可以考慮持久化或者限流。
評估數(shù)據(jù)是否適合放入Redis中需要考慮以下幾個方面:
綜上所述,評估數(shù)據(jù)是否適合放入Redis中需要綜合考慮數(shù)據(jù)類型、數(shù)據(jù)量、數(shù)據(jù)訪問模式、數(shù)據(jù)持久化需求、數(shù)據(jù)一致性要求、并發(fā)訪問和數(shù)據(jù)安全性等因素。根據(jù)具體需求和場景,決定是否選擇使用Redis作為數(shù)據(jù)存儲解決方案。
以下是一些常見的例子。
判斷數(shù)據(jù)是否放入Redis的方法,我說下自己的理解。
Redis的特點是內(nèi)存存儲,所以它主要適合的是獨立、速度快、適合頻繁訪問/修改、常作為快速緩存替代SQL。
什么樣的數(shù)據(jù)適合放入Redis中呢?這里沒必要扯什么數(shù)據(jù)類型、什么業(yè)務(wù)等等虛的概念。從它的特點中能看出,所有不適合把數(shù)據(jù)放入SQL數(shù)據(jù)庫、同時又不方便本地緩沖的場景數(shù)據(jù),都適合放入Redis中。
因此,如果目標數(shù)據(jù)既需要高速緩存,又需要獨立存在于程序之外:比如防止服務(wù)重啟(包括且不限于升級、錯誤、重啟)等造成數(shù)據(jù)丟失,或者多個服務(wù)共享此數(shù)據(jù),這時就可以放入Redis中。因為Redis的穩(wěn)定性是可期的,同時網(wǎng)絡(luò)接口又允許多個服務(wù)器同時訪問。
因此所有要求使用Redis的場景,都有重要的特征,即高速和獨立存儲?;谶@個需求,創(chuàng)造出來的業(yè)務(wù)概念即哪些所謂的 熱點業(yè)務(wù)數(shù)據(jù)、高速數(shù)據(jù)鏡像、共享緩存等等,也就好理解了。
下圖就是實際業(yè)務(wù)中的一種場景,即為了幫SQL抗流量。重復(fù)的查詢和快速的更新由Redis抗下,而SQL只做持久化。
希望能幫到有類似問題的朋友。朋友們,望不吝賜贊??!
一個非常好的問題。我是工作多年的Web應(yīng)用架構(gòu)師,來回答一下這個問題。歡迎關(guān)注我,了解更多IT專業(yè)知識。
要成為Java架構(gòu)師,應(yīng)該具備多方面的知識技能,特別重要的是,一定要有多個實際項目經(jīng)驗。
Java是當前的主流開發(fā)語言,應(yīng)用普遍,尤其是在電商系統(tǒng)、信息管理系統(tǒng)、企業(yè)應(yīng)用開發(fā)等方面,搭配Spring Boot開發(fā)框架,基本上是壟斷地位。
拿Web服務(wù)開發(fā)為例,為了滿足實際需求,Web項目功能和架構(gòu)都日趨復(fù)雜:多層架構(gòu),數(shù)據(jù)中臺,動靜分離,集群化部署,自動化運維,等等。
不同于一個Demo演示,用于商業(yè)、有價值的一個Web服務(wù)是功能全面的。
1)數(shù)據(jù)庫,免費開源的MySQL,收費的Oracle,其他主流數(shù)據(jù)庫
2)緩存系統(tǒng),Redis,MongoDB以及其它的NoSQL數(shù)據(jù)庫
3)消息隊列,常用的ActiveMQ,RocketMQ,RabbitMQ
到此,以上就是小編對于mongodb查詢速度慢的問題就介紹到這了,希望這2點解答對大家有用。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流