阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Memcached的内存管理方式

176次阅读
没有评论

共计 1596 个字符,预计需要花费 4 分钟才能阅读完成。

Memcached 采用了名为 Slab Allocation 的机制分配,管理内存。

Slab Allocation 的原理相当简单。将分配的内存分割成各种尺寸的块(chucnk),并把尺寸相同的块分成组(chucnk 的集合)如图:

Memcached 的内存管理方式

而且 slab Allocation 还有重复使用已分配内存的目的。也就是说,分配到的内存不会释放,而是重复利用。

Slab Allocation 的主要术语

  • Page : 分配给 Slab 的内存空间,默认是 1MB。分配给 Slab 之后根据 slab 的大小切分成 chunk.
  • Chunk : 用于缓存记录的内存空间。
  • Slab Class: 特定大小的 chunk 的组。

在 Slab 中缓存记录的原理

Memcached 根据收到的数据的大小,选择最合适数据大小的 Slab (图 2) memcached 中保存着 slab 内空闲 chunk 的列表,根据该列表选择 chunk, 然后将数据缓存于其中。

Memcached 的内存管理方式

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 服务器增多后,键就会分散,即使一台 memcached 服务器发生故障无法连接,也不会影响其他的缓存,系统依然能继续运行。

Memcached 安装及启动脚本 http://www.linuxidc.com/Linux/2013-07/87641.htm

PHP 中使用 Memcached 的性能问题 http://www.linuxidc.com/Linux/2013-06/85883.htm

Ubuntu 下安装 Memcached 及命令解释 http://www.linuxidc.com/Linux/2013-06/85832.htm

Memcached 的安装和应用 http://www.linuxidc.com/Linux/2013-08/89165.htm

使用 Nginx+Memcached 的小图片存储方案 http://www.linuxidc.com/Linux/2013-11/92390.htm

Memcached 使用入门 http://www.linuxidc.com/Linux/2011-12/49516p2.htm

Memcached 的详细介绍 :请点这里
Memcached 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-06/118830.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1596字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中