根據我的理解。Memcache驅逐策略
在內存緩存整個存儲器中固定大小的頁面被分割,並且每個頁面所屬的顆粒板坯class.Each頁被進一步劃分成固定大小的塊,塊的大小決定爲每板坯class.Data存儲最適合它的塊(儘量減少內部碎片)。
Memcache使用LRU策略驅逐。
地方我已閱讀,LRU策略框架上,而不是整個data.So應用,可以有情況(不同類的)框架是免費的,但仍然驅逐正在發生一個框架上。
這是memcache行爲的方式嗎?而不是驅逐,不應該調整空置框架的卡盤?
根據我的理解。Memcache驅逐策略
在內存緩存整個存儲器中固定大小的頁面被分割,並且每個頁面所屬的顆粒板坯class.Each頁被進一步劃分成固定大小的塊,塊的大小決定爲每板坯class.Data存儲最適合它的塊(儘量減少內部碎片)。
Memcache使用LRU策略驅逐。
地方我已閱讀,LRU策略框架上,而不是整個data.So應用,可以有情況(不同類的)框架是免費的,但仍然驅逐正在發生一個框架上。
這是memcache行爲的方式嗎?而不是驅逐,不應該調整空置框架的卡盤?
如上所述,內存分爲固定大小的頁面(1MB或最大項目配置大小),每個頁面屬於顆粒板類。在開始時,這些頁面實際上並未分配給任何特定的板類。在請求到來時,每個大小範圍都會創建平板類,並將頁面附加到它們。
確定最佳的板類是關鍵。它的算法大致看起來像:
現在,回答你的問題。
只有當所有頁面被分配給某些板類時纔會發生驅逐。因爲,所有的頁面都綁定了一些平板類,並準備接受該尺寸範圍內的對象/項目。剩餘的空閒內存不能用於其他大小的對象。即它們不能調整大小。我猜這是爲了簡單而實現的。此方法適用於許多Web應用程序,其中對象大小几乎與查詢結果一樣大小,呈現html頁面。在這種情況下,Memcache將把它擁有的所有頁面分配給您使用的很少的類。
我記得在某個地方讀過,Redis在這方面的內存調整比較靈活。
希望它有幫助!