日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Memcached原理分析

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

Memcached的內存管理方式

Memcached采用了名為Slab Allocation的機制分配,管理內存。

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



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

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

?

在Slab 中緩存記錄的原理

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

?

?

Memcached在數據過期與刪除

Memcached內部不會監視記錄是否過期,而是在get此條記錄時查看其時間戳,檢查記錄是否過期。這種技術稱為lazy expiration.因此memcached不會再過期監視上耗費CPU時間。

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

?

Memcached的分布式原理

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

例如:

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

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

轉載于:https://www.cnblogs.com/sunniest/p/4437806.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。