你知道和不知道的事.ppt
文本预览下载声明
Memcached:你知道和不知道的事;Memcached 是国外社区网站 LiveJournal 的开发团队开发的高性能的分布式内存缓存服务器。用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。 ;memcached的特征;协议简单;基于libevent的事件处理;内置内存存储方式;memcached不互相通信的分布式;memcached安装;
假设安装目录为/usr/local
安装libevent
$ tar xzvf libevent-1.4.14b-stable.tar.gz
$ cd libevent-1.4.14b-stable
$ ./configure --prefix=/usr/local/libevent-1.4.14b-stable
$ make
$ make all
安装memcached
$ tar xzvf memcached-1.4.5.tar.gz
$ cd memcached-1.4.5
$ ./configure --with-libevent=/usr/local/libevent-1.4.14b-stable --prefix=/usr/local/memcached-1.4.5
$ make
$ make all
;memcached启动与关闭;Memcached基本操作实例;存储命令set/add/replace;格式:
command key flags exptime bytes [version]\r\n
datablock\r\n
status\r\n
command set无论如何都进行存储
add只有数据不存在时进行添加
repalce只有数据存在时进行替换
append往后追加:append key datablock status?
prepend往前追加:prepend key datablock status
cas按版本号更改
key 字符串,250个字符,不包含空格和控制字符
flags 客户端用来标识数据格式的数值,如json,xml,压缩等
exptime 存活时间s,0为永远,30天60*60*24*30为秒数,30天为unixtime
bytes byte字节数,不包含\r\n,根据长度截取存/取的字符串,可以是0,即存空串
datablock 文本行,以\r\n结尾,当然可以包含\r或\n;读取命令get/gets;计数命令incr/decr;删除命令delete;统计命令stats;;stats slabs区块统计;2、Memcache内存分配机制;Slab Allocation机制:整理内存以便重复使用;而且,slab allocator还有重复使用已分配的内存的目的。也就是说,分配到的内存不会释放,而是重复利用。;Slab Allocation的主要术语;在Slab中缓存记录的原理;Page为内存分配的最小单位;Slabs划分数据空间;Chunk才是存放缓存数据的单位;;;;slab内存结构图:二维数组链表;调优;使用合适的factor,减少浪费
-f参??:默认为1.25,曾经为2
值越小,slab中chunk size差距越小,内存浪费越小
很显然,factor越小,chunk匹配得就越精准,但是slab组就会分得越多,而产生LRU的机会也会增加,factor越大,分组就越少,产生LRU的机会就越小,但是chunk匹配精准度会有所下降,1.25较为理想
1.25适合缓存几百字节的对象
建议:计算一下数据的预期平均长度,调整factor,以获得最恰当的设置
根据数据分布调整factor
非均匀分布,即数据长度集中在几个区域内
如保存用户Session
更极端的状态是等长数据
如定长键值,定长数据
多见于访问、在线统计或执行锁
;一切都是为了更快;因为优秀,所以不足;3、memcached分布式;memcached的分布式是什么意思?;分布式简介:准备;分布式简介:添加时;分布式简介:获取时;分布式算法之根据余数计算分散;根据余数计算分散的缺点;Consistent Hashing:一致性hash算法;;;;;关于php一致性hash算法:
酸酸哥sina博客:
/s/blog_700e11ff0101190z.html
php与memcached服务器交互的分布式实现源码分析 [memcache版]:
/gonxi/article/details/6130624
;
显示全部