對(duì)的哈希表。通過key,可以存儲(chǔ)或查詢?nèi)我獾臄?shù)據(jù)。"/> 香蕉av福利精品导航,www久久com,亚洲а∨天堂2021在线网站

教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

memcached是怎么工作的?

更新時(shí)間:2020年07月09日13時(shí)45分 來源:傳智播客 瀏覽次數(shù):

問題:memcached是怎么工作的?

答:

Memcached的神奇來自兩階段哈希(two-stagehash)。Memcached就像一個(gè)巨大的、存儲(chǔ)了很多<key,value>對(duì)的哈希表。通過key,可以存儲(chǔ)或查詢?nèi)我獾臄?shù)據(jù)。
客戶端可以把數(shù)據(jù)存儲(chǔ)在多臺(tái)memcached上。當(dāng)查詢數(shù)據(jù)時(shí),客戶端首先參考節(jié)點(diǎn)列表計(jì)算出key的哈希值(階段一哈希),進(jìn)而選中一個(gè)節(jié)點(diǎn);客戶端將請(qǐng)求發(fā)送給選中的節(jié)點(diǎn),然后memcached節(jié)點(diǎn)通過一個(gè)內(nèi)部的哈希算法(階段二哈希),查找真正的數(shù)據(jù)(item)。
舉個(gè)列子,假設(shè)有3個(gè)客服端1 23臺(tái)memcached A,B,C
Client 1想把數(shù)據(jù)"barbaz"以key“foo”存儲(chǔ)。Client 1首先參考節(jié)點(diǎn)列表(A, B, C)計(jì)算key“foo”的哈希值, 假設(shè)memcached B被選中。接著,Client 1直接connect到memcached B通過key“oo”把數(shù)據(jù)"barbaz”存儲(chǔ)進(jìn)去。Client 2使用與Client 1相同的客戶端庫(kù)(意味著階段一的哈希算法相同),也擁有同樣的memcached列表(A, B, C)
于是,經(jīng)過相同的哈希計(jì)算(階段一),Client 2計(jì)算出key“foo”在memcachedB上,然后它直接請(qǐng)求memcached B,得到數(shù)據(jù)"barbaz"。各種客戶端在memcached中數(shù)據(jù)的存儲(chǔ)形式是不同的(perl Storable php serialize,java hibernate,JSON等)。一些客戶端實(shí)現(xiàn)的哈希算法也不一樣。但是,memcached服務(wù)器端的行為總是一致的。
最后,從實(shí)現(xiàn)的角度看,memcached 是一個(gè)非阻塞的、基于事件的服務(wù)器程序。這種架構(gòu)可以很好地解決C10K  problem,并具有極佳的可擴(kuò)展性。




下面是傳智教育公開的幾套Java課程,您可以下載和在線觀看學(xué)習(xí),如果想深入學(xué)習(xí)java并想找到不錯(cuò)的java開發(fā)相關(guān)工作,建議報(bào)班學(xué)習(xí)傳智教育Java高級(jí)軟件工程師課程。獲取【Java視頻教程+資料】加播妞1605146928606_課程資料.jpg:435946716。



0 分享到:
和我們?cè)诰€交談!