對的哈希表。通過key,可以存儲或查詢?nèi)我獾臄?shù)據(jù)。"/> 亚洲成av人片在一线观看,一级特级AA一级

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

全國咨詢/投訴熱線:400-618-4000

memcached是怎么工作的?

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

問題:memcached是怎么工作的?

答:

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




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



0 分享到:
和我們在線交談!