欢迎来到天天文库
浏览记录
ID:15403735
大小:106.00 KB
页数:11页
时间:2018-08-03
《memcached完全剖析–1. memcached的基础》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、memcached完全剖析–1.memcached的基础翻译一篇技术评论社的文章,是讲memcached的连载。fcicq同学说这个东西很有用,希望大家喜欢。发表日:2008/7/2作者:长野雅广(MasahiroNagano)原文链接:http://gihyo.jp/dev/feature/01/memcached/0001我是mixi株式会社开发部系统运营组的长野。日常负责程序的运营。从今天开始,将分几次针对最近在Web应用的可扩展性领域的热门话题memcached,与我公司开发部研究开发组的前坂一起,说明其内部结构和使用。memcached是什么?m
2、emcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库
3、查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。图1一般情况下memcached的用途memcached的特征memcached作为高速运行的分布式缓存服务器,具有以下的特点。·协议简单·基于libevent的事件处理·内置内存存储方式·memcached不互相通信的分布式协议简单memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据。下面是例子。$telnetlocalhost11211Trying127.0.0.1...Co
4、nnectedtolocalhost.localdomain(127.0.0.1).Escapecharacteris'^]'.setfoo003(保存命令)bar(数据)STORED(结果)getfoo(取得命令)VALUEfoo03(数据)bar(数据)协议文档位于memcached的源代码内,也可以参考以下的URL。·http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt基于libevent的事件处理libevent是个程序库,它将Linux的epoll、BSD类操作系
5、统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考DanKegel的TheC10KProblem。·libevent:http://www.monkey.org/~provos/libevent/·TheC10KProblem:http://www.kegel.com/c10k.html内置内存存储方式为了提高性能,memcached中保存的数据都存储在me
6、mcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(LeastRecentlyUsed)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。memcached不互相通信的分布式memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完
7、全取决于客户端的实现。本连载也将介绍memcached的分布式。图2memcached的分布式接下来简单介绍一下memcached的使用方法。安装memcachedmemcached的安装比较简单,这里稍加说明。memcached支持许多平台。·Linux·FreeBSD·Solaris(memcached1.2.5以上版本)·MacOSX另外也能安装在Windows上。这里使用FedoraCore8进行说明。memcached的安装运行memcached需要本文开头介绍的libevent库。Fedora8中有现成的rpm包,通过yum命令安装即可。$su
8、doyuminstalllibeventlibevent-deve
此文档下载收益归作者所有