日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Memcached原理分析

發(fā)布時間:2025/5/22 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Memcached原理分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

Slab Allocation的原理相當簡單。將分配的內(nèi)存分割成各種尺寸的塊(chucnk),并把尺寸相同的塊分成組(chucnk的集合)如圖:



而且slab Allocation還有重復使用已分配內(nèi)存的目的。也就是說,分配到的內(nèi)存不會釋放,而是重復利用。
Slab Allocation 的主要術語

  • Page :分配給Slab 的內(nèi)存空間,默認是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)部不會監(jiān)視記錄是否過期,而是在get此條記錄時查看其時間戳,檢查記錄是否過期。這種技術稱為lazy expiration.因此memcached不會再過期監(jiān)視上耗費CPU時間。

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

?

Memcached的分布式原理

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

例如:

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/sunniest/p/4437806.html

總結(jié)

以上是生活随笔為你收集整理的Memcached原理分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。