1 Memcached介绍
1.1 概述
Memcached是一个开源的高性能的分布式内存对象缓存系统,在Web应用中用于减轻数据库负载。我们可以将使用频率较高,且要求时效性不严格的数据缓存到memcached中,以减少读取数据库的次数,从而减低数据库压力。另外,在集群环境下,也可以通过memcached缓存session,以达到session数据共享的目的。
1.2 特点
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
· 协议简单
· 基于libevent的事件处理
· 内置内存存储方式
· memcached不互相通信的分布式
Memcached是否支持数据持久化?
没有,memcached不具备数据持久化功能,当memcached重启时,保存在里面的数据会全部丢失;
Memcached的各节点是否能够进行数据同步共享?
不能,memcached的各节点是相互独立的,无法共享数据;
Memcached是否会产生内存碎片?
不会,memcached使用SlabAllocation的内存预分配机制,不会产生内存碎片。
正是因为以上几点,memcached的CPU使用率是非常低的,所以如果服务器上有空闲的内存,不妨利用起来,作为缓存使用。
1.3 原理
1) 数据存储方式-Slab Allocation机制
名词解释:
Chunk:用于缓存记录的内存空间。
Page:分配给Slab的内存空间,默认是1MB。分配给Slab之后根据切分成大小相同的chunk。
Slab Class:特定大小的chunk的组。
Growth Factor:增长因数,默认为1.25
Memcached在启动时,会根据配置的起始chunk大小、增长因子Growth Factor、page的大小,生成Slab。例如chunk size是88B,page为1M,Growth Factor是1.25,则会生成88、112、144、184……1M等39组Slab。每个slab保存固定尺寸的chunk,由此不难发现,