国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Memcached原理分析

2019-11-17 02:04:29
字體:
供稿:網(wǎng)友

Memcached原理分析

Memcached的內(nèi)存管理方式

Memcached采用了名為Slab Allocation的機(jī)制分配,管理內(nèi)存。

Slab Allocation的原理相當(dāng)簡(jiǎn)單。將分配的內(nèi)存分割成各種尺寸的塊(chucnk),并把尺寸相同的塊分成組(chucnk的集合)如圖:而且slab Allocation還有重復(fù)使用已分配內(nèi)存的目的。也就是說,分配到的內(nèi)存不會(huì)釋放,而是重復(fù)利用。Slab Allocation 的主要術(shù)語

  • Page :分配給Slab 的內(nèi)存空間,默認(rèn)是1MB。分配給Slab 之后根據(jù)slab 的大小切分成chunk.
  • Chunk : 用于緩存記錄的內(nèi)存空間。
  • Slab Class:特定大小的chunk 的組。

在Slab 中緩存記錄的原理

Memcached根據(jù)收到的數(shù)據(jù)的大小,選擇最合適數(shù)據(jù)大小的Slab (圖2) memcached中保存著slab內(nèi)空閑chunk的列表,根據(jù)該列表選擇chunk,然后將數(shù)據(jù)緩存于其中。

Memcached在數(shù)據(jù)過期與刪除

Memcached內(nèi)部不會(huì)監(jiān)視記錄是否過期,而是在get此條記錄時(shí)查看其時(shí)間戳,檢查記錄是否過期。這種技術(shù)稱為lazy expiration.因此memcached不會(huì)再過期監(jiān)視上耗費(fèi)CPU時(shí)間。

添加新數(shù)據(jù)時(shí),Memcached會(huì)優(yōu)先使用已超時(shí)的記錄空間,如果空間不足,此時(shí)就要使用名為Least Recently Used (LRU最近最少使用)機(jī)制來分配空間。因此當(dāng)memcached的內(nèi)存空間不足時(shí)(無法從slab class)獲取到新空間時(shí),就從最近未使用的記錄中搜索,并將空間分配給新的記錄。

Memcached的分布式原理

Memcached是通過客戶端來實(shí)現(xiàn)分布式的,以新數(shù)據(jù)(鍵值對(duì))的鍵通過一定的算法選擇一個(gè)服務(wù)器,保存在此服務(wù)器的Memcached中。

例如:

向memcached中添加“tokyo”。將“tokyo”傳給客戶端程序庫后,客戶端實(shí)現(xiàn)的算法就會(huì)根據(jù)“鍵”來決定保存數(shù)據(jù)的memcached服務(wù)器。服務(wù)器選定后,即命令它保存“tokyo”及其值。同樣,“kanagawa”“chiba”“saitama”“gunma”都是先選擇服務(wù)器再保存。接下來獲取保存的數(shù)據(jù)。獲取時(shí)也要將要獲取的鍵“tokyo”傳遞給函數(shù)庫。函數(shù)庫通過與數(shù)據(jù)保存時(shí)相同的算法,根據(jù)“鍵”選擇服務(wù)器。使用的算法相同,就能選中與保存時(shí)相同的服務(wù)器,然后發(fā)送get命令。只要數(shù)據(jù)沒有因?yàn)槟承┰虮粍h除,就能獲得保存的值。

這樣,將不同的鍵保存到不同的服務(wù)器上,就實(shí)現(xiàn)了memcached的分布式。 memcached服務(wù)器增多后,鍵就會(huì)分散,即使一臺(tái)memcached服務(wù)器發(fā)生故障無法連接,也不會(huì)影響其他的緩存,系統(tǒng)依然能繼續(xù)運(yùn)行。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苏尼特左旗| 花垣县| 宕昌县| 六枝特区| 门源| 偏关县| 隆安县| 巴青县| 清流县| 大荔县| 南通市| 巨野县| 子长县| 荃湾区| 庆元县| 枣庄市| 绥滨县| 大姚县| 东光县| 秦皇岛市| 新建县| 定州市| 宁海县| 罗江县| 兴山县| 射洪县| 策勒县| 湖北省| 喀喇沁旗| 平舆县| 辽宁省| 合水县| 东城区| 龙山县| 皮山县| 文化| 民勤县| 贵德县| 巴塘县| 金溪县| 孝义市|