<label id="2a06w"><tt id="2a06w"></tt></label><label id="2a06w"><tt id="2a06w"><em id="2a06w"></em></tt></label><menu id="2a06w"></menu>
  • <dfn id="2a06w"><var id="2a06w"><label id="2a06w"></label></var></dfn>
    <sup id="2a06w"><button id="2a06w"><em id="2a06w"></em></button></sup>
    <dfn id="2a06w"><var id="2a06w"></var></dfn>
    <dfn id="2a06w"></dfn>
  • <dfn id="2a06w"><code id="2a06w"><ins id="2a06w"></ins></code></dfn>
  • <small id="2a06w"><samp id="2a06w"></samp></small>
  • <dfn id="2a06w"><table id="2a06w"><center id="2a06w"></center></table></dfn>
    <label id="2a06w"><tt id="2a06w"><em id="2a06w"></em></tt></label>
    <strike id="2a06w"><form id="2a06w"></form></strike>
    <menu id="2a06w"><tt id="2a06w"></tt></menu>

    將想法與焦點和您一起共享

    網(wǎng)站對象緩存發(fā)布者:本站     時間:2019-11-12 13:11:43

    對象緩存用于存儲會被應用再用到的對象。這些對象通常來自數(shù)據(jù)庫,或由計算或應用操作生成。這些對象幾乎都是有序對象,會被排列或組編成有序的格式,以便最小化內存占用量。在獲取這些對象時,它們的排序會被打亂或解編,以轉換成原始的數(shù)據(jù)類型。所謂組編,就是把對象的內存表示形式轉換成字節(jié)流或字節(jié)序列進程,以便存儲或傳輸。所謂解編,就是把字節(jié)流表示的對象解碼成原始的對象格式的進程。如果使用了對象緩存,應用必須注意到它們,并且實現(xiàn)操作緩存的方法。

    操作緩存的基本方法包括把數(shù)據(jù)加人緩存、從緩存中獲取數(shù)據(jù)以及更新數(shù)據(jù)。通常在緩存中添加數(shù)據(jù)叫做set,從緩存中獲取數(shù)據(jù)叫做get,更新數(shù)據(jù)是replace。許多程序設計語言對最流行的緩存都已經(jīng)有內置的支持。memcached是當前最常用的緩存之一。它“本質上是一種高性能的分布式內存對象緩存系統(tǒng),但目的在于通過減輕數(shù)據(jù)庫的負載來加速動態(tài)的Web應用”。這種特殊的緩存使用了非??斓臒o阻塞網(wǎng)絡輸入輸出(IO),它自身具備防止內存分片的slab分配器、可以確保分配是的,即不論數(shù)據(jù)多少都能夠在常數(shù)時間內進行計算。
     
    正如在memcached的描述中所說的,它主要是通過減少對數(shù)據(jù)庫的請求,從而加速了Web應用。這種方法是合理的,因為數(shù)據(jù)庫幾乎總是應用層中獲取數(shù)據(jù)最慢的設備。在關系數(shù)據(jù)庫管理系統(tǒng)中,實現(xiàn)ACID(原子性、一致性、隔離性、持久性)屬性的額外支出是很高的,尤其是要從硬盤讀寫數(shù)據(jù)時。但在某些情況下,在系統(tǒng)的其他層之間使用對象緩存層,也是完全正常和明智的。
     
    在一個典型的兩層或者三層架構中,放置對象緩存最好的方法是把它放在數(shù)據(jù)庫層之前。正如前面提到過的,這是因為數(shù)據(jù)庫層通常是整體執(zhí)行速度最慢的層,也通常是擴展最貴的一層。其中有一個Web服務器層、一個應用服務器層和一個數(shù)據(jù)庫層。這里不止有一個對象緩存,而是有兩個。一個對象緩存位于應用服務器與數(shù)據(jù)庫層之間,另一個位于Web服務器與應用服務器之間。如果應用服務器要執(zhí)行大量可緩存的計算或操作,那么這種設計是很合理的。這樣可以使應用服務器不必總是重復計算相同的數(shù)據(jù),而是可以把結果緩存起來,從而減輕了應用服務器的負載。與數(shù)據(jù)庫的情況相似,這個緩存層可以在不添加硬件的情況下,幫助應用服務器層擴展。緩存的對象很可能是來自數(shù)據(jù)庫或應用服務器的完整數(shù)據(jù)集的子集。例如,Web服務器上的應用代碼可能會利用緩存存放用戶權限對象,但是不會存放交易金額,因為用戶權限不經(jīng)常改變且會被經(jīng)常訪問,而每個交易的交易金額可能各不同且只會被訪問一次。
     
    數(shù)據(jù)庫的ACID屬性
     
    原子性、一致性、隔離性、持久性(ACID)是數(shù)據(jù)庫管理系統(tǒng)采用的屬性,以確保交易是完全可靠的。
     
    原子性是數(shù)據(jù)庫管理系統(tǒng)的屬性,可以確保一個交易的所有任務都被完全執(zhí)行了,或者整個交易都被回退了。硬件或軟件的故障不會造成交易只完成了一半。
     
    一致性是確保交易前和交易后數(shù)據(jù)庫保持穩(wěn)定狀態(tài)的屬性。如果一個交易成功了,它會把數(shù)據(jù)庫從一個有效狀態(tài)轉換到另一個符合一定規(guī)則的有效狀態(tài)。
     
    隔離性是在一個交易操作數(shù)據(jù)時,防止另一個交易訪問它的屬性。大多數(shù)數(shù)據(jù)庫管理系統(tǒng)都采用數(shù)據(jù)庫鎖來確保隔離性。
     
    持久性這個屬性指的是在系統(tǒng)把交易標記為成功后,交易就會保持為完成的、不會回退的。所有的一致性檢查必須在交易被認為是完成了之前完成。
     
    如果你在網(wǎng)站建設數(shù)據(jù)庫或應用服務器中有經(jīng)常被訪問但卻不經(jīng)常更新的數(shù)據(jù),那么使用對象緩存就非常合理。要減少負載,首先查看的就是數(shù)據(jù)庫,因為它通常是最慢也是最貴的一層。但除此之外,還要考慮一下系統(tǒng)中的其他層或池,看看哪里需要對象緩存。另一個可能需要對象緩存的地方是集中的會話管理緩存。如果你使用了會話數(shù)據(jù),我們建議你首先盡可能地減少會話數(shù)據(jù)。如果你可以避免使用會話,那么就根本不要采用它們,因為它們在基礎設施和架構方面,實現(xiàn)成本都很高。如果你不能避免使用會話,我們建議你考慮集中的會話管理系統(tǒng),這樣可以把請求發(fā)送到任何一個Web服務器上,會話可以從一個服務器轉移到另一個服務器上,不會造成任何干擾。這樣通過一個負載均衡的解決方案,你就能夠更有效地利用Web服務器,而當發(fā)生故障時,也可以以最小的干擾,把用戶從一臺服務器上轉移到另一臺服務器上。你可以繼續(xù)檢查自己的應用,找到更多可以應用對象緩存的地方。



    選擇我們,優(yōu)質服務,不容錯過
    1. 優(yōu)秀的網(wǎng)絡資源,強大的網(wǎng)站優(yōu)化技術,穩(wěn)定的網(wǎng)站和速度保證
    2. 15年上海網(wǎng)站建設經(jīng)驗,優(yōu)秀的技術和設計水平,更放心
    3. 全程省心服務,不必擔心自己不懂網(wǎng)絡,更省心。
    ------------------------------------------------------------
    24小時聯(lián)系電話:021-58370032
    99人妻中文字幕视频在,亚洲无码视频在线免费看,久久国产乱子伦免费精品,日本中文字幕色视频网站
    <label id="2a06w"><tt id="2a06w"></tt></label><label id="2a06w"><tt id="2a06w"><em id="2a06w"></em></tt></label><menu id="2a06w"></menu>
  • <dfn id="2a06w"><var id="2a06w"><label id="2a06w"></label></var></dfn>
    <sup id="2a06w"><button id="2a06w"><em id="2a06w"></em></button></sup>
    <dfn id="2a06w"><var id="2a06w"></var></dfn>
    <dfn id="2a06w"></dfn>
  • <dfn id="2a06w"><code id="2a06w"><ins id="2a06w"></ins></code></dfn>
  • <small id="2a06w"><samp id="2a06w"></samp></small>
  • <dfn id="2a06w"><table id="2a06w"><center id="2a06w"></center></table></dfn>
    <label id="2a06w"><tt id="2a06w"><em id="2a06w"></em></tt></label>
    <strike id="2a06w"><form id="2a06w"></form></strike>
    <menu id="2a06w"><tt id="2a06w"></tt></menu>