Memcached详解

所需积分/C币:10 2016-07-31 10:15:49 1.05MB PDF
收藏 收藏
举报

教你如何使用Memcached的教材
idy 2. com 3.4外部引擎支持. 20 外部引擎支持的必要性. 垂垂看看 20 简单API设计的成功的关键 21 重新审视现在的体系… 21 3.5总结… 2 第4章 memcached的分布式算法 4.1 memcached的分布式 memcached的分布式是什么意思? 23 4.2 Cache: Memcached的分布式方法 根据余数计算分散. 根据余数计算分散的缺点 26 4.3 Consistent Hashing 27 Consistent Hashing的简单说明. 支持 Consistent Hashing的函数厍 .看看·垂 总结 第5章 memcached的应用和兼容程序.…. 30 5.1mixi案例研究… 服务器配置和数量 音看看 .30 memcached进程 memcached使用方法和客户端 .··.···::::: 音。着·看着垂普鲁D·。······着番普音垂音 52 memcached应用经验 …132 通过 dacmontools启动 监视 memcached的性能 33 5.3兼容应用程序 135 Tokyo tyrant案例…15 54总结 36 idy 2. com 羊者序 译者序 如今,越来越多的wcb应用程序开始使用 memcached这个髙速的缓存服务器软件。然而, memcached的基础知识远远未能像其他Web技术那样普及, memcached在国内的大规模应用也鲜为 人知。而日本的mixi(htp:/ mixi. it)则在这方面走在了前面,不仅人规模使用 memcached作为缓 存来加速Web应用,而且自行开发了 Tokyo Cabinit、 Tokyo Tyrant等一系列相关的软件。 最近,口本的技术评论社的网站上刊登了mixi的两名工程师长野雅广、前坂徹撰写的篇连载 《 memcached态知以尽<寸》。这篇连载语言简洁、通俗易懂,非常适合 memcached入门的人阅读 因此我将它翻泽成中文,发表在我的技术blog( Lech. idy2com)上。然后将翻译结果合并后稍作加 工,形成了这篇PDF文档,以方使阅读。 本文的原文地址如下,懂日语的朋友可以直接去参考原文 http:/gihvoip/dev/feature/01/memcached/ 翻译后的文章地址如下 第1章:hp:/ ech.idv2om/2008/07/10 memcached-o AE24: heLp: //Lech. idv 2. com/2008/07/11/memcached-002/ ●第3章:hp/ ech. idv2com2008/07/6/ memcached-003 Ge4K:http://tech.idv2.com/2008/07/24/memcached-004/ C54:http://tech.idv2.com/2008/07/31/memcached-005/ 本PDF可以在这个地址下载 .http://tech.idv2.com/2008/08/17/memcached-pdf/ charlee 008年8月17日 idy 2. com 第1章 memcached的基础 第1章 memcached的基础 我是皿x株式会社开发部系统运营组的长野。日常负责程序的运营。从今大廾始,将针对最近在 web应用的叫护展性领域的热门话题 memcached,与我公司廾发部饼究开发组的前坂一起,说明其 内部结构和使用。 11 memcached是什么? memcached是以 Livejournal旗下 Danga interactive公司的 Brad Fitzpatrick为首开发的一款软件。现在 口成为mixi、 hatena、 Facebook、Vu、 Livejournal等众多服务中提高Web应用扩展性的重要因素。 许多Wb应用都将数据保存到 RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数 据量的增大、访问的集中,就会出现 RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大 影响。 这时就该 memcached大显身手了。 memcached是高性能的分布式内存缓存服务器。一般的使用目的 是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展 性 浏览器 应用服努器 memcached memcached RDBMS RDBMS memcached memcached 百次访问:从RDBM中取得数据保存到 memcached 第二次后:从 memcached中取得数据显示页面 图11:一般情况下 memcached的用途 idy 2. com 第1章 memcached的基础 2 memcached的特征 memcached作为高速运行的分布式缓存服务器,具有以下的特点。 协议简单 基于 libevent的事件处理 内置内存存储方式 memcached不互相通信的分布式 协议简单 memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。 因此,通过 telnet也能在 memcached上保存数据、取得数据。下面是例子。 s telnet localhost 11211 frying127.0.0.1 Connected to localhost. localdomain (127.0.0.1 Escape character is] set foo o0 3 (保存命令 bar (数据) STORE D (结果 cet too (取得命令) VALUE foo o 3 (数据) bar (数据) 协议文档位于 memcached的源代码内,也可以参考以下的URL。 http://codesixapart.com/svn/memcached/trunk/server/doc/protocolLxL 基于 libevent的事件处理 libevent是个程序库,它将 Linux的 epoll, bsd类操作系统的 kqueue等事件处理功能封装成统-的 接∏。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个 libevent斥,因此 能在 Linux、BSD、 Solaris等操作系统上发挥其高性能。关于事件处埋这里就不再详绀介绍,可以 参考 Dan kegel的TheC10 K Problen。 libevent:http://www.monkey.org/-provos/libevent/ TheC10kProblemhttp://www.kegel.com/c10k.html 内置内存存储方式 为了提高性能, memcached中保存的数据都存储在 memcached内置的内存存储空间中。由于数据仅 存在于内存中,因此重启 memcached、重启操作系统会导致全部数据消失。与外,内容容量达到扎 定值之后,就基于LRU( Least recenty used算法自动删除不使用的缓存。 memcached木身是为缓存 而设计的服务器,因此并没有过多考虑数据的永久性问题。关于内存存储的详细信息,请参考木文 的2章以后前坂介绍的内容 memcached不互相通信的分布式 memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个 memcached不会互 相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本文也将介绍 memcached的分布式。 idy 2. com 第1章 memcached的基础 I memcached memcached memcached 分布式算法 客户端程序库 应用程序 图1.2: memcached的分布式 接下来简单介绍一下 memcached的使用方法 13安装 memcached memcached的安装比较简单,这里稍加说明 memcached支持许多平台 Linux FreeBSD Solaris( memcached1.25以上版本) · Mac os x 号外也能安装在 Windows上。这里使用 Fedora core8进行说明。 memcached的安装 运行 memcached需要本文开头介绐的 I libevent库。 Fedora8中有现成的rpm包,通过yum命令安装 即可 s sudo yum install libevent libevent-devel memcached的源代码可以从 memcached网站上下载。本文执笔时的最新版本为1.25。 Fedora8虽然 也包含了 memcached的rpm,但版本比较老。因为源代码安装并不困难,这里就不使用rpm了。 F4memcached:http://www.danga.com/memcached/download.bml memcached安裝与般应用程序相同, configure、make、 make install就行了。 swgethttp://www.danga.com/mencached/dist/memcached-1.2.5.tar.gz f tar zxf memcached-1.2.5. tar. g7 cd memcached-1.2. 5 / configure s make 7 idy 2. com 第1章 memcached的基础 e sudo make install 默认情况下 memcached安装到/usr/ local/bin memcached的启动 从终端输入以下命令,启动 memcached s /usr/local/bin/memcached-p 11211-m64m-VV slab class 1: chunk size 88 persia 11915 slab class 2: chunk size 112 persia.b 9362 slab class 3: chunk size 144pers1a7281 中间省略 slab class 38: chunk size 391224 perslab 2 slab class 39: chunk size 489032 persia <23 server listening <24 send bu=fer was 110592, now 268435455 <24 server listening (udp) <24 server listening (udp) 24 server listening (udp) <24 server listening (udp) 这里显小了调试信息。这样就在前台启动了 memcached,监听TCP端口11211最大内存使用量为 64M。调试信息的内容大部分是关于存储的信息,下一章将只体说明 作为 daermon后台启动时,只需 s /usr/local/bin/memcached -p 11211 -m 6 4m -d 这里使用的 memcached启动选项的内容如下 选项 说明 使用的TCP端口。默认为12l1 最大内存大小。默认为64Ⅵ 用 vcry vrcbosc模式启动,调试信息和错误输出到控制台 作为 daemon在后台启动 上面四个是常用的启动选项,其他还有很多,通过 s /usr/local/bin/memcached n 命令可以显示。许多选项可以改变 memcached的各种行为,推荐读一读 14用客户端连接 许多语言都实现了连接 memcached的客户端,其中以Perl、PHP为主。仅仅 memcached网站上列出 的语言就有 Pcrl PHP Python Rub C# 8 idy 2. com 第1章 memcached的基础 ·C/C++ 子寸 memcached客户端API:htp:/www.danga.com/memcached/apis.bml 这里介绍通过mxi正在使用的Perl库链接 memcached的方法。 15使用 Cache: Memcached Per的 memcached客户端有 Cache. Memcached Cache: Memcached: Fast Cache: Memcached; libmemcached 等几个CPAN模坎。这里介绍的 Cacho: Memcached是 memcached的作者 Brad fitzpatrick l作品,应 该算是 memcached的客户端中应用最为广泛的模块了。 Cache:Memcached-search.cpan.org:http://search.cpan.org/dist/Cache-Meincached/ 使用 Cache: Memcached连接 memcached 下面的源代码为通过 Cache: Memcached连接刚才启动的 memcached的例子。 #!/usr/bin/perl use stricti use warni ngs i use Cache:: Memcached i my skey =W=CO Svalue ="bar i my expires =3500;# I hour my Memcached Cache:: Memcached->new(f server s=>["127,0,0,1:11211"], compress_threshold=> 10_000 }); smemcached->add(skey, svalue, expires )i my Sret Smemcached->get(Skey)i print."sret、n"; 在这里,为 Cache: Memcached指定了 memcached服务器的IP地址和一个选项,以牛成实例 Cache: Memcached常用的选项如下所示。 选项 说明 servers 用数组指定 memcached服务器和端口 compress threshold 数据压缩时使用的值 namespace 指定添加到键的前缀 另外, Cache∷ Memcached通过 Storable模块可以将Perl的复杂数据序列化之后雨保存,因此散列 数组、对象等都可以直接保存到 memcached中。 idy 2. com 第1章 memcached的基础 保存数据 向 memcached保存数据的方法有 replace 它们的使用方法都相同: my sadd= Memcached->add('键','值','期限) my replace= memcached->ep1ace('键','值','期限) my Sset= memcached->set('键','值','期限’); 冋 memcached保存数据时可以指定期限(秒)。不指定期限时, memcached按照LRU算法保存数据 这三个方法的区别如下 选项说明 add仅当存储空间中不存在键相同的数据时才保存 replace仅当存储空间中存在键相同的数据时才保存 set 与ad和 replace不同,无论何时都保存 获取数据 获取数据可以使用get和 gct_multi方法 my Sval- Smemcached->get(' ') my sval= Memcached-> get multi('键1','键2’,'键3','键4','键5'); 次取得多条数据时使用 get_multi get_multi可以非同步地同时取得多ˆ键值,其速度要比循环调 用get快数十倍。 删除数据 删除数据仗用 delete)法,不过它有个独特的功能。 Memcached-> delete(键’,阳塞时间(秒)) 删除第一个参数指定的键的数据。第二个参数指定一个时间佰,可以禁止使用同样的键保存新数据。 此功能可以用于防止缓存数据的不完整。但是要注意,set函数忽视该阻塞,照常保存数据 增一和减一操作 可以将 memcached上特定的键值作为计数器使用 my Sret= Smemcached->incr('ftt')i Smemcached->add('te!', C) unless defined Sret 增一和减一是原」操作,但未设置初始值时,不会自动赋成0。因此,应当进行错误检查,必要时 加入初始化操作。而且,服务器端也不会对超过232时的行为进行检查

...展开详情
试读 36P Memcached详解
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • 分享宗师

    成功上传21个资源即可获取
关注 私信 TA的资源
上传资源赚积分or赚钱
最新推荐
Memcached详解 10积分/C币 立即下载
1/36
Memcached详解第1页
Memcached详解第2页
Memcached详解第3页
Memcached详解第4页
Memcached详解第5页
Memcached详解第6页
Memcached详解第7页
Memcached详解第8页

试读结束, 可继续读3页

10积分/C币 立即下载 >