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

memcached架构及缓存策略

120次阅读
没有评论

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

—————————————- 概述 —————————————-

Memcached 是一套高性能分布式内存对象缓存服务器。它将所有的数据统统保存在内存中,在内存中会维护一个巨大的 hash 表,支持任意存储类型的数据,很多网站通过 Memcached 提高网站的访问速度,尤其是对于大型的需要频繁访问的网站,减少查询效率,提高查询速度

—————————————- 架构 —————————————-

memcached 架构及缓存策略

C/ S 架构:

服务端:Memcached 服务端,通过 C 语言编写而成

客户端:Memcached API 客户端,可以通过任何语言编写,如 php、py 等

特点:

1. 为了提高性能,memcached 中保存的数据都存储在 memcached 内置的内存空间中:由于数据仅存在于内存中,因此重启 memcached、重启操作系统会导致全部数据消失

2. 基于 libevent 的事件处理:libevent 是个程序库,它将 Linux 的 epoll、BSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口;即使对服务器的连接数增加,也能发挥 O(1) 的性能;memcached 使用这个 libevent 库,因此能在 Linux、BSD、Solaris 等操作系统上发挥其高性能

3. 简单 key/value 存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可;存储项由“键、过期时间、可选的标志及数据”四个部分组成

4. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期

—————————————- 缓存策略 —————————————-

Slab Allocator 机制基本原理:

按照预先规定的大小,将分配的内存分割成特定长度的块 chunk,并把尺寸相同的块分成组,以完全解决内存碎片问题。但由于分配的是特定长度的内存,因此无法有效利用分配的内存。比如将 100 字节的数据缓存到 128 字节的 chunk 中,剩余的 28 字节就浪费了;按照预先规定的大小,将分配的内存分割成特定长度的内存块 chunk,再把尺寸相同的内存块分层组 chunk 集合,这些内存不会释放,可以反复利用

memcached 架构及缓存策略
Slab Allocation 机制角色:

1.chunk 为固定大小的内存空间,默认为 96Byte

2.page 对应实际的物理空间,1 个 page 为 1M

3. 同样大小的 chunk 集合又称为 slab

memcached 架构及缓存策略
客户端选择 slab 机制:

下面说明 memcached 如何针对客户端发送的数据选择 slab 并缓存到 chunk 中;memcached 根据收到的数据的大小,选择最适合数据大小的 slab;memcached 中保存着 slab 内空闲 chunk 的列表,根据该列表选择 chunk,然后将数据缓存于其中

memcached 架构及缓存策略
内存释放机制:

Laxzy Expiration:

Memcached 每个被存取的对象都有唯一的标识符 key,存取操作均通过 key 进行,例如可以把后端数据库中的 select 操作提取出来,然后对相应的 SQL 进行 hash 计算得出 key,然后以这个 key 在 memcached 中查找数据,如果数据不存在,说明其尚未被写入缓存中,并设置一个失效时间(比如 1 小时),在失效时间内的数据都是从缓存中提取,这样就有效地减少了数据库的压力

Least Recently Used(LRU):

删除“最近最少使用”的记录的机制;当 memcached 的内存空间不足时,从最近未被使用的记录中搜索,并将其空间分配给新的记录;-M 参数禁止 LRU 功能,内存用尽时,memcached 会返回错误,不建议使用 memcached -M -m 1024

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