精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:存儲技術專區 → 正文

總結:十個常見的緩存使用誤區及建議

責任編輯:editor006 |來源:企業網D1Net  2014-10-31 15:21:08 本文摘自:中關村在線

在日常工作中,開發者經常利用緩存來優化站點或應用程序,然而在實際應用中,大家使用緩存時,總會存在或多或少的誤區,反而影響了站點或應用程序的正常運行。近日,highscalability上的一篇文章總結了十大使用緩存的誤區和建議。

現就對這十大緩存誤區以及使用建議進行一個全面的梳理:

1、依賴默認的序列化方式

使用默認的序列化處理方式可能會消耗大量的CPU資源,尤其是處理復雜類型數據時。所以建議大家一定要根據所使用語言和環境的情況,采用最合理、有效的序列化和反序列化方式。

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

由于序列化和反序列化需要一定的資源開銷,當處于高并發高負載的情況下,對大對象數據的頻繁讀取有可能會使得服務器的CPU崩潰,所以建議大家把大對象數據分成為較小的子對象,然后再各自進行緩存。

3、在不同線程間使用緩存共享對象

在競態條件(Race conditions)條件下,當寫線程對緩存進行寫入操作時,如果這是讀線程剛好也要訪問同一緩沖對象,就有可能讀取臟數據,所以在實際開發中要根據實際情況采取外部鎖機制,以保證緩存數據的正確讀寫。

4、認為存儲數據操作后,數據即刻就能存儲到緩存中

剛進行寫入緩存操作的數據并不一定能夠馬上寫入緩存,這是因為當緩存空間不足時,剛寫入的緩存有可能被刷新掉。所以在編寫程序時,應該首先對獲得緩存的值作空值檢測。

5、使用嵌套對象存儲整個集合

如果將整個集合對象數據進行嵌套緩存的話,獲得其中某個具體元素的性能將會嚴重受到影響,這是因為整個集合存儲意味著對整個嵌套對象進行序列化。有鑒于此,建議單獨對每個元素進行緩存,這樣就可以做到對每個對象分別更新和讀取,以減少序列化的影響。

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

有時候一個對象可能擁有兩個或更多的父對象,同一對象存儲在不同地方,這樣就會造成緩存的浪費。為了不讓同一對象存儲于不同地方,這就需要根據統一對象本身的鍵進行緩存,這樣父對象就能夠根據需要訪問子對象。

7、對配置信息進行緩存

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

8、對實時對象進行緩存

如果對實時對象(例如:流、文件、注冊信息或者網絡情況)的引用進行緩存的話,當緩存數據被刪除后,之前緩存的實時對象不被刪除,這樣會造成系統資源泄漏,所以不要對實時對象進行存儲。

9、使用多個鍵存儲同一對象

盡管使用多個鍵存儲同一對象就使得使用一個鍵和索引號來進行訪問時帶來便利,但是當緩存是基于遠程緩存的話,任何關于對象改變都是不可見的,這樣會導致緩存數據同步問題的發生,所以不建議使用多個鍵存儲同一對象。

10、在連續存儲中進行更新或刪除后不及時更新相應緩存對象

由于在一個遠程緩存中,數據以拷貝方式存儲,所以當更新對象時,緩存不會被同步更新。所以更新對象時,緩存必須被明確地進行更新。然而在基于內存的緩存中,當刪除一個對象時,在緩存中不會被同步刪除,所以建議通過程序確保緩存對象被正確刪除。

關鍵字:緩存使用建議

本文摘自:中關村在線

x 總結:十個常見的緩存使用誤區及建議 掃一掃
分享本文到朋友圈
當前位置:存儲技術專區 → 正文

總結:十個常見的緩存使用誤區及建議

責任編輯:editor006 |來源:企業網D1Net  2014-10-31 15:21:08 本文摘自:中關村在線

在日常工作中,開發者經常利用緩存來優化站點或應用程序,然而在實際應用中,大家使用緩存時,總會存在或多或少的誤區,反而影響了站點或應用程序的正常運行。近日,highscalability上的一篇文章總結了十大使用緩存的誤區和建議。

現就對這十大緩存誤區以及使用建議進行一個全面的梳理:

1、依賴默認的序列化方式

使用默認的序列化處理方式可能會消耗大量的CPU資源,尤其是處理復雜類型數據時。所以建議大家一定要根據所使用語言和環境的情況,采用最合理、有效的序列化和反序列化方式。

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

由于序列化和反序列化需要一定的資源開銷,當處于高并發高負載的情況下,對大對象數據的頻繁讀取有可能會使得服務器的CPU崩潰,所以建議大家把大對象數據分成為較小的子對象,然后再各自進行緩存。

3、在不同線程間使用緩存共享對象

在競態條件(Race conditions)條件下,當寫線程對緩存進行寫入操作時,如果這是讀線程剛好也要訪問同一緩沖對象,就有可能讀取臟數據,所以在實際開發中要根據實際情況采取外部鎖機制,以保證緩存數據的正確讀寫。

4、認為存儲數據操作后,數據即刻就能存儲到緩存中

剛進行寫入緩存操作的數據并不一定能夠馬上寫入緩存,這是因為當緩存空間不足時,剛寫入的緩存有可能被刷新掉。所以在編寫程序時,應該首先對獲得緩存的值作空值檢測。

5、使用嵌套對象存儲整個集合

如果將整個集合對象數據進行嵌套緩存的話,獲得其中某個具體元素的性能將會嚴重受到影響,這是因為整個集合存儲意味著對整個嵌套對象進行序列化。有鑒于此,建議單獨對每個元素進行緩存,這樣就可以做到對每個對象分別更新和讀取,以減少序列化的影響。

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

有時候一個對象可能擁有兩個或更多的父對象,同一對象存儲在不同地方,這樣就會造成緩存的浪費。為了不讓同一對象存儲于不同地方,這就需要根據統一對象本身的鍵進行緩存,這樣父對象就能夠根據需要訪問子對象。

7、對配置信息進行緩存

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

8、對實時對象進行緩存

如果對實時對象(例如:流、文件、注冊信息或者網絡情況)的引用進行緩存的話,當緩存數據被刪除后,之前緩存的實時對象不被刪除,這樣會造成系統資源泄漏,所以不要對實時對象進行存儲。

9、使用多個鍵存儲同一對象

盡管使用多個鍵存儲同一對象就使得使用一個鍵和索引號來進行訪問時帶來便利,但是當緩存是基于遠程緩存的話,任何關于對象改變都是不可見的,這樣會導致緩存數據同步問題的發生,所以不建議使用多個鍵存儲同一對象。

10、在連續存儲中進行更新或刪除后不及時更新相應緩存對象

由于在一個遠程緩存中,數據以拷貝方式存儲,所以當更新對象時,緩存不會被同步更新。所以更新對象時,緩存必須被明確地進行更新。然而在基于內存的緩存中,當刪除一個對象時,在緩存中不會被同步刪除,所以建議通過程序確保緩存對象被正確刪除。

關鍵字:緩存使用建議

本文摘自:中關村在線

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 遂溪县| 图们市| 咸宁市| 延庆县| 城口县| 姚安县| 西和县| 抚远县| 惠安县| 辽阳市| 竹北市| 纳雍县| 定远县| 都江堰市| 垣曲县| 苍溪县| 安西县| 灯塔市| 盐亭县| 汾西县| 大悟县| 汉川市| 巩义市| 大渡口区| 黔江区| 南岸区| 贵溪市| 正蓝旗| 岚皋县| 长泰县| 永嘉县| 西和县| 邵东县| 满城县| 平远县| 嘉峪关市| 武安市| 海兴县| 河北区| 收藏| 洛扎县|