2023-05-18 分類: 網(wǎng)站建設
在日常工作中,開發(fā)者經(jīng)常利用緩存來進行優(yōu)化站點或優(yōu)化應用程序。但在實際應用中,在使用緩存時,總是那么不盡如意。這什么原因呢?本文,筆者收集了最為常見的十大緩存誤區(qū)以及使用建議。我們一起來看下 :
1. 依賴默認的序列化。
默認的序列化處理方式可能會消耗大量的CPU資源,特別是處理復雜類型數(shù)據(jù)時。所以建議要根據(jù)語音和環(huán)境的不同,采用最優(yōu)化的序列化和反序列化方式。
2. 在單一緩存中存儲大對象數(shù)據(jù)。
由于序列化和反序列化需要一定的資源開銷,處于并發(fā)負載時,大對象圖形數(shù)據(jù)的頻繁讀取有可能會讓服務器的CPU崩潰。相反,不妨考慮把大對象數(shù)據(jù)打散為較小的子對象,之后再各自進行緩存。根據(jù)你的需求讀取最小的數(shù)據(jù)單元。
3. 在不同進程間使用緩存共享對象。
出現(xiàn)競態(tài)條件(Race conditions)時,當寫進程也參與其中,同時剛好程序的某部分也訪問同一緩沖對象,情況會變得更壞。采取外部鎖機制是有必要的。
4. 儲存數(shù)據(jù)后立馬進行緩存。
千萬不要倉促行事,即使是剛寫入不久,當存儲資源緊張時,一個緩存足以阻礙程序運行。所以用代碼來進行緩存空值返回檢查是很有必要的。
5. 使用嵌套對象存儲全集合。
由于序列化的影響,執(zhí)行一次全集合存儲會導致程序運行變慢。有鑒于此,單獨對獨立對象進行緩存可以實現(xiàn)分開讀取,減少序列化影響。
6. 對父子對象采取統(tǒng)一與單獨混用的存儲方式。
有時候一個對象可能擁有兩個或更多的父對象。根據(jù)統(tǒng)一對象本身的鍵進行緩存以便不會把同一對象存儲于不同地方,這樣父對象可以按需訪問子對象。
7. 對配置信息進行緩存。
使用進程的本地靜態(tài)變量來存儲配置數(shù)據(jù)。緩存數(shù)據(jù)訪問是有代價的,所以要盡可能把影響減到最低。
8. 對活性對象進行緩存,例如:流,文件,注冊信息或者網(wǎng)絡。
不要嘗試對上述等包含引用信息的活性對象進行緩存。因為當緩存數(shù)據(jù)被刪除后,之前緩存的活性對象不會被刪除,這樣會造成系統(tǒng)資源泄漏。
9. 對同一對象采取多鍵存儲。
這樣或許在使用一個鍵和索引號來進行訪問時帶來便利。如果一個緩存是in-memory的,這樣做是可行的,因為緩存中包含了同一對象的引用信息,也就是說一旦該對象發(fā)生變更,都可以透過兩邊的訪問路徑進行查看。如果是遠程(外部)緩存,任何變更的發(fā)生都是不可見的,所以這樣會導致同步問題的產(chǎn)生。
10.在連續(xù)存儲中進行更新或刪除后沒有及時更新相應緩存對象。
在一個遠程緩存中,數(shù)據(jù)以拷貝方式存儲,所以當更新對象時,緩存不會被同步更新。緩存必須被明確指定,才能根據(jù)變更而進行更新。在in-memory緩存中,一個對象發(fā)生的變更是對所有人可見的。在刪除時情況類似,刪除一個對象時,在緩存中不會被同步刪除。這取決于程序本身如何確保緩存對象被正確刪除。
分享題目:10個常見的緩存使用誤區(qū)
地址分享:http://www.rwnh.cn/news16/259966.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、網(wǎng)站策劃、電子商務、ChatGPT、微信小程序、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容