文档详情

你知道和不知道的事.ppt

发布:2017-09-06约1.95千字共50页下载文档
文本预览下载声明
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 ;
显示全部
相似文档