根据我的理解。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在这方面的内存调整比较灵活。
希望它有帮助!