民初思韻網

加入收藏   設為首頁
選擇語言   簡體中文
你好,請 登陸 或 注冊
首頁 人文思韻 傳奇人物 歷史思潮 時代作品 話題討論 國民思韻 民初捐助 賬戶管理
  搜索  
    人文精神 >>> 技術話題—商業文明的嶄新時代
字體    

10個常見的緩存使用誤區
10個常見的緩存使用誤區
CSDN     阅读简体中文版

  英文原文:10 Program Busting Caching Mistakes

  在日常工作中,開發者經常利用緩存來進行優化站點或優化應用程序。但在實際應用中,在使用緩存時,總是那么不盡如意。這什么原因呢?本文,筆者收集了最為常見的十大緩存誤區以及使用建議。我們一起來看下 :

  1.   依賴默認的序列化。

  默認的序列化處理方式可能會消耗大量的 CPU 資源,特別是處理復雜類型數據時。所以建議要根據語音和環境的不同,采用最優化的序列化和反序列化方式。

  2.   在單一緩存中存儲大對象數據。

  由于序列化和反序列化需要一定的資源開銷,處于并發負載時,大對象圖形數據的頻繁讀取有可能會讓服務器的 CPU 崩潰。相反,不妨考慮把大對象數據打散為較小的子對象,之后再各自進行緩存。根據你的需求讀取最小的數據單元。

  3.   在不同進程間使用緩存共享對象。

  出現競態條件(Race conditions)時,當寫進程也參與其中,同時剛好程序的某部分也訪問同一緩沖對象,情況會變得更壞。采取外部鎖機制是有必要的。

  4.   儲存數據后立馬進行緩存。

  千萬不要倉促行事,即使是剛寫入不久,當存儲資源緊張時,一個緩存足以阻礙程序運行。所以用代碼來進行緩存空值返回檢查是很有必要的。

  5.   使用嵌套對象存儲全集合。

  由于序列化的影響,執行一次全集合存儲會導致程序運行變慢。有鑒于此,單獨對獨立對象進行緩存可以實現分開讀取,減少序列化影響。

  6.   對父子對象采取統一與單獨混用的存儲方式。

  有時候一個對象可能擁有兩個或更多的父對象。根據統一對象本身的鍵進行緩存以便不會把同一對象存儲于不同地方,這樣父對象可以按需訪問子對象。

  7.   對配置信息進行緩存。

  使用進程的本地靜態變量來存儲配置數據。緩存數據訪問是有代價的,所以要盡可能把影響減到最低。

  8.   對活性對象進行緩存,例如:流,文件,注冊信息或者網絡。

  不要嘗試對上述等包含引用信息的活性對象進行緩存。因為當緩存數據被刪除后,之前緩存的活性對象不會被刪除,這樣會造成系統資源泄漏。

  9.   對同一對象采取多鍵存儲。

  這樣或許在使用一個鍵和索引號來進行訪問時帶來便利。如果一個緩存是 in-memory 的,這樣做是可行的,因為緩存中包含了同一對象的引用信息,也就是說一旦該對象發生變更,都可以透過兩邊的訪問路徑進行查看。如果是遠程(外部)緩存,任何變更的發生都是不可見的,所以這樣會導致同步問題的產生。

  10. 在連續存儲中進行更新或刪除后沒有及時更新相應緩存對象。

  在一個遠程緩存中,數據以拷貝方式存儲,所以當更新對象時,緩存不會被同步更新。緩存必須被明確指定,才能根據變更而進行更新。在 in-memory 緩存中,一個對象發生的變更是對所有人可見的。在刪除時情況類似,刪除一個對象時,在緩存中不會被同步刪除。這取決于程序本身如何確保緩存對象被正確刪除。

 

2015-05-19 00:19

歡迎訂閱我們的微信公眾賬號!
春秋茶館訂閱號
微信號 season-tea(春秋茶館)
每天分享一篇科技/遊戲/人文類的資訊,點綴生活,啟迪思想,探討古典韻味。
  清末民初歷史人物  民初人物
革命先行者民國之父
孫中山(1866年11月12日-1925年3月12日),本名孫文,字載之,號日新、逸仙,廣東香山(今中山)人,是醫師、近代中國的民主革命家、中國國民黨總理、第一任中華民國....
為元首清廉不阿至情至性
林森(1868年—1943年8月1日)字子超,號長仁。福建閩侯人。1868年出生于福建省閩侯縣尚干鄉,1884年于臺北電信局工作。1902年到上海海關任職,其間參加反清活....
資助民初精神網
        回頂部     寫評論

 
評論集
暫無評論!
發表評論歡迎你的評論
昵稱:     登陸  註冊
主頁:  
郵箱:  (僅管理員可見)

驗證:   验证码(不區分大小寫)  
© 2011   民初思韻網-清末民初傳奇時代的發現與復興   版權所有   加入收藏    設為首頁    聯繫我們    1616導航