memcache数据存储原理

1.memcache如何保存数据

memcache使用slab算法保存数据(以下借用别人的一张图)


slab分配算法把每1MB大小的内存称为一个slab页,每次向系统申请一个slab页,然后再通过分隔算法把这个slab页分割成若干个小块的chunk(如上图所示),然后把这些chunk分配给用户使用。

slab算法按照不同大小的chunk分割slab页,而不同大小的chunk以factor(默认是1.25)倍增大。

可以使用memcache -u root -vv 命令查看内存分配情况(8字节对齐):


2.memcache淘汰数据

memcache使用LRU(last recently used)算法淘汰数据,以一个题目作为说明:

某缓存系统采用LRU淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问一下数据项的时候:1,5,1,3,5,2,4,1,2出现缓存直接命中的次数是?,最后缓存中即将准备淘汰的数据项是?

答案:3, 5
解答:
  1. 1调入内存 1
  2. 5调入内存 1 5
  3. 1调入内存 5 1(命中 1,更新次序)
  4. 3调入内存 5 1 3
  5. 5调入内存 1 3 5 (命中5)
  6. 2调入内存 1 3 5 2
  7. 4调入内存(1最久未使用,淘汰1) 3 5 2 4
  8. 1调入内存(3最久未使用,淘汰3) 5 2 4 1
  9. 2调入内存 5 4 1 2(命中2)


相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页