国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 临城县| 平南县| 申扎县| 屏东县| 响水县| 北京市| 北流市| 宝兴县| 房产| 灌阳县| 哈巴河县| 大安市| 光山县| 金堂县| 南江县| 永新县| 商都县| 扬州市| 八宿县| 阿拉善右旗| 南靖县| 西丰县| 乐山市| 开化县| 凤冈县| 镇巴县| 新和县| 武安市| 江源县| 酒泉市| 沧源| 福清市| 安西县| 武平县| 锡林郭勒盟| 澄城县| 红桥区| 库伦旗| 清水河县| 青海省| 铜梁县|