Memcached原理和使用详解.ppt
《Memcached原理和使用详解.ppt》由会员分享,可在线阅读,更多相关《Memcached原理和使用详解.ppt(40页珍藏版)》请在三一办公上搜索。
1、Memcached 原理和使用详解,作者:heiyeluren(黑夜路人),2009-01,2,Memcached介绍Memcached安装和使用一些技巧Q&A,Tech Talk 目录索引,3,Memcached介绍:,什么是Memcached?Memcached是国外社区网站 LiveJournal 的开发团队开发的高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。LiveJournal 团队开发了包括 Memcached、MogileFS、Perlbal 等不错的开源项目。,4,Memcached介绍,M
2、emcached运行图,5,Memcached介绍,谁在用Memcached?国外 国内,6,Memcached介绍,与Memcached类似的还有什么?国外 Tokyo Cabinet:http:/(日本mixi.jp公司开发)国内MemcacheDB:http:/memcachedb.org(新浪开源Team开发)tmcache:http:/(偶开发的 _),7,Memcached介绍,Memcached的主要特点基于C/S架构,协议简单基于libevent的事件处理自主内存存储处理基于客户端的Memcached分布式,8,Memcached介绍,基于C/S架构,协议简单,9,Memcac
3、hed介绍,基于libevent的事件处理libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris 等操作系统的的事件处理。包装的接口包括:poll、select(Windows)、epoll(Linux)、kqueue(BSD)、/dev/pool(Solaris)Memcached 使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。libevent:http:/www.monkey.org/provos/libevent/,10,Memcached介绍,自主的内存存储处理
4、 数据存储方式:Slab Allocation 数据过期方式:Lazy Expiration+LRU,11,Memcached介绍,数据存储方式:Slab AllocationSlab Alloction 构造图,Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。Slab Allocation的原理相当简单。将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合),12,Memcached介绍,数据存储方式:Slab AllocationSlab Classes 分配图,Page:分配给Slab的
5、内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。Chunk:用于缓存记录的内存空间。Slab Class:特定大小的chunk的组。memcached根据收到的数据的大小,选择最适合数据大小的slab。memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存于其中。,13,Memcached介绍:,数据存储方式:Slab AllocationSlab Alloction 缺点,这个问题就是,由于分配的是特定长度的内存,因此无法有效利用分配的内存。例如,将100字节的数据缓存到128字节的chunk中,剩余的28字节就浪费了
6、。,14,Memcached介绍:,数据过期方式 Lazy Expirationmemcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。LRUmemcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当memcached的内存空间不足时(无法从slab class 获取到新的空间
7、时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。,15,Memcached介绍:,基于客户端的Memcached分布式,16,Memcached介绍:,基于客户端的Memcached分布式,/按照Key值,获取一个服务器IDint getServerId(char*key,int serverTotal)int c,hash=0;while(c=*key+)hash+=c;return hash%serverTotal;/服务器列表node0=192.168.0.1:11211node1=192.168.0.2:11211node2=192.
8、168.0.3:11211/获取key是tokyo的节点ID(服务器ID)int id=getServerId(test,3);/得出的结果是1,那么对应的机器就是 nodeid=node1,17,Memcached介绍:,基于客户端的Memcached分布式 写入操作 读取操作,18,Memcached安装和使用:,Memcached 安装 Memcached 与 PHP 结合使用 Memcached 与 C/C+结合使用,19,Memcached安装和使用:,Memcached 安装,安装步骤:先安装 libevent 再安装 Memcached 主程序源码下载:(最新版)libevent
9、官网:http:/monkey.org/provos/libevent/,20,Memcached安装和使用:,Memcached 安装,安装 libevent#./configure-prefix=/usr#make#make install 安装 Memcached#./configure-prefix=/usr/local#make#make install,21,Memcached安装和使用:,Memcached 运行,试运行 Memcached#/usr/local/bin/memcached-u hualiangxie,22,Memcached安装和使用:,Memcached 运行
10、,查看Memcached 帮助信息#/usr/local/bin/memcached-h,23,Memcached安装和使用:,Memcached 运行,关注基本选项-p 监听的TCP端口(缺省:11211)-d 以守护进程方式运行Memcached-u 运行Memcached的账户,非root用户-m 最大的内存使用,单位是MB,缺省是 64 MB-c 软连接数量,缺省是 1024-v 输出警告和错误信息-vv 打印客户端的请求和返回信息-h 打印帮助信息-i 打印memcached和libevent的版权信息运行 Memcached目标:使用11211端口、hualiangxie用户、最大
11、占用512M内存、1024个软连接,输出客户端请求,以守护进程方式运行#/usr/local/bin/memcached-p 11211-d-u hualiangxie-m 512-c 1024-vvv,24,Memcached安装和使用:,Memcached 运行,检查是否正常启动#pa auxxww|grep memcached1001 4402 0.0 0.0 2296 900 pts/0 S+19:24 0:00/usr/local/bin/memcached-u hualiangxie root 4547 0.0 0.0 1892 668 pts/3 S+19:42 0:00 gre
12、p memcached#telnet localhost 11211Trying 127.0.0.1.Connected to localhost.Escape character is.statsSTAT pid 4402STAT uptime 1032STAT time 1231155683STAT pointer_size 32.END,25,Memcached安装和使用:,Memcached 基本协议,数据存取set key1 0 180 3abcSTOREDadd key1 0 180 3xyzNOT_STOREDget key1VALUE key1 0 3abcENDreplace
13、 key1 0 180 3xyzSTOREDget key1VALUE key1 0 3xyzENDdelete key1DELETED,数字加减set key2 0 180 41234STOREDincr key2 31237get key2VALUE key2 0 41237ENDdecr key2 11236get key2VALUE key2 0 41236END,26,Memcached安装和使用:,Memcached 和 PHP 结合使用,安装 PHP Memcache 扩展扩展官网:扩展下载:Memcache扩展安装:#/usr/local/php/bin/phpize#./co
14、nfigure-with-php-config=/usr/local/php/bin/php-config#make#make install配置#ls-l/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/memcache.so#vim/usr/local/php/lib/php.ini 新增配置内容:extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/extension=memcache.so检查安装结果#/usr/local/
15、php/bin/php-m#/usr/local/apache2/bin/apachectl restart,27,Memcached安装和使用:,Memcached 与 PHP 结合使用,PHP与Memcache结合测试代码connect(localhost,11211);/保存数据$mem-set(key1,This is first value,0,60);$val=$mem-get(key1);echo Get key1 value:.$val.;/替换数据$mem-replace(key1,This is replace value,0,60);$val=$mem-get(key1)
16、;echo Get key1 value:.$val.;/保存数组数据$arr=array(aaa,bbb,ccc,ddd);$mem-set(key2,$arr,0,60);$val2=$mem-get(key2);echo Get key2 value:;print_r($val2);echo;,/删除数据$mem-delete(key1);$val=$mem-get(key1);echo Get key1 value:.$val.;/清除所有数据$mem-flush();$val2=$mem-get(key2);echo Get key2 value:;print_r($val2);ec
17、ho;/关闭连接$mem-close();?,28,Memcached安装和使用:,Memcached 与 PHP 结合使用,PHP与Memcache分布式在一台或者多台机器启用一个或者多个进程,这里是在一台机器启用两个进程,使用两个端口:#/usr/local/bin/memcached-p 11211-d-u hualiangxie#/usr/local/bin/memcached-p 11212-d-u hualiangxie PHP 测试代码addServer(localhost,11211);$mem-addServer(localhost,11212);/保存数据$mem-set(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Memcached 原理 使用 详解
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6512417.html