Memcached工作原理以及記憶體管理

2021-07-11 01:13:41 字數 915 閱讀 8091

memcached工作原理

包括服務端和客戶端,以鍵值對的形式儲存。key根據乙個

hash

演算法得到乙個

hashkey

,根據這個值來確定選擇哪台伺服器儲存。客戶端根據

key的值用相同的方法計算出

hash

值,確定是哪個伺服器,然後進行連線,獲取

value值

快取策略

當服務端的hash

表滿了以後,新來的資料會替代老資料。

kv對儲存的有效時限是在客戶端用

設定並作為引數傳遞給

ms的。

memcached的記憶體管理

1.page固定大小為1mb   當slab class空間不足時,就會申請page,並將page按照chunk的大小切割。

2.slab class(板塊) memecached是以slab class為單位管理的,每個slab對應乙個或多個大小相同的chunk。每個slab class都有它自己的統計資訊以及自己的lru(最少用到的資料)。在啟動memcached時,指定-vv引數,可以在啟動日誌中檢視每個slab class的chunk大小。

3.chunk 用來存放key和value值。memcached會根據元素的大小來判斷存到哪個slab中,元素不一定能佔滿整個chunk,所以可能會存在空間剩餘

memecached有自己的記憶體管理,是為了防止系統記憶體碎片

記憶體的**

乙個新的資料進來時,如果該板塊已經存滿,而且page也已經用光。

memcached將會去檢查舊資料中失效的元素然後重用他的記憶體(前提是在同乙個板塊裡),如果沒有失效的元素,就檢查最近很少用的元素(lru),占用他的記憶體。memcached不會主動收回記憶體,失效的元素記憶體釋放,記憶體用光時才被再次使用

Memcached原理分析

memcached採用了名為slab allocation的機制分配,管理記憶體。slab allocation的原理相當簡單。將分配的記憶體分割成各種尺寸的塊 chucnk 並把尺寸相同的塊分成組 chucnk的集合 如圖 而且slab allocation還有重複使用已分配記憶體的目的。也就是說...

ThinkPHP MVC工作原理以及跳轉頁面

mvc分別代表 m model模型 對資料庫進行curd操作 v view檢視 與使用者進行互動,讓使用者進行的操作的介面 c controller控制器 後台對檢視或模型進行控制,比如呼叫模型的資料庫查詢方法返回結果,把結果傳輸給檢視,讓檢視顯示該資料 在控制器中預設的index方法 this d...

Ajax工作原理以及封裝使用

1 什麼是ajax?ajax 非同步程式設計的一種解決方案 是一種用於建立快速動態網頁的技術。通過後台與伺服器之間資料的少量交換,在不重新整理頁面的情況下,更新頁面部分的資料。2 工作原理?相當於在瀏覽器 客戶端 與伺服器之間增加了乙個中間層 ajax引擎 使使用者操作與伺服器響應非同步化,這樣就可...