




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Memcache 使用说明文档修订记录:版本号修订人修订日期修订描述V1.0庄欠林2012-03-07第一版目录目录2一.简介3二.工作原理4三.安装51.windows下安装memcache52.linux下安装memcache6四.Memcache所有方法及参数详解91.Memcache:add用法102.Memcache:addServer用法103.Memcache:close用法114.Memcache:connect用法125.memcache:debug126.Memcache:decrement用法137.Memcache:delete用法138.Memcache:flush149.Memcache:get1510.Memcache:getExtendedStats1511.Memcache:getServerStatus1612.Memcache:getStats1713.Memcache:set1714.Memcache:getVersion1815.Memcache:increment1816. Memcache:pconnect19五.其他20一.简介memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表(如下图),它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是的一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统, 这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcache作者对分布式cache的理解和解决方案。 memcache完全可以用到其他地方 比如分布式数据库, 分布式计算等领域。 Memcached hash表形式(key=value对)KEYVALUE变量1可以标量变量2可以是数组变量3可以是对象变量n可以是任意类型nameZhangan age10emailA二.工作原理首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。 与许多 cache 工具类似,Memcached 的原理并不复杂。它采用了C/S的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。Memcached 的目前版本是通过C实现,采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式.使用 libevent 作为事件通知实现。多个 Server 可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个 Server 只是对自己的数据进行管理。Client 端通过指定 Server 端的 ip 地址(通过域名应该也可以)。需要缓存的对象或数据是以 key-value 对的形式保存在Server端。key 的值通过 hash 进行转换,根据 hash 值把 value传递到对应的具体的某个 Server 上。当需要获取对象数据时,也根据 key 进行。首先对 key 进行 hash,通过获得的值可以确定它被保存在了哪台 Server 上,然后再向该 Server 发出请求。Client 端只需要知道保存 hash(key) 的值在哪台服务器上就可以了。其实说到底,memcache 的工作就是在专门的机器的内存里维护一张巨大的 hash 表(键值对方式),来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。三.安装1.windows下安装memcache下载Memcache地址:/detail/psdshow/3567146(1).将下载的压缩包解压放某个盘下面,比如在c:memcached (2). 在终端(也即cmd命令界面)下输入 c:memcachedmemcached.exe -d install 安装 (3). 再输入: c:memcachedmemcached.exe -d start 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。(4). 启动memcached服务器:在cmd命令界面中输入: c:memcachedmemcached.exe -l -m 32 -d start-l:是指定ip地址,不写的话默认为本机-m: 最大内存使用,单位MB。默认64MB ,最大好像2G(5).下载php_memcache.dll,请自己查找对应的php版本的文件 (6). 在C:winntphp.ini 加入一行 extension=php_memcache.dll (7).重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!(8).如果安装完,看一下任务管理器,出现一下情况,则说明memcache真正安装成功.(9)memcached的基本设置: -p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcached服务 -d stop|shutdown 关闭正在运行的memcached服务 -d install 安装memcached服务 -d uninstall 卸载memcached服务 -u 以的身份运行 (仅在以root运行的时候有效) -m 最大内存使用,单位MB。默认64MB -M 内存耗尽时返回错误,而不是删除项 -c 最大同时连接数,默认是1024 -f 块大小增长因子,默认是1.25 -n 最小分配空间,key+value+flags默认是48 -h 显示帮助2.linux下安装memcache需要安装的就是服务器的Memcached的守护进程和客户端的PHP扩展php_memcache两个东西。现在我分别来讲。服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.4.0 。下载:/memcached/dist/memcached-1.4.0.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.2。(如果你的系统已经安装了libevent,可以不用安装)官网:/provos/libevent/下载:/provos/libevent-1.2.tar.gz我分别把两个东东下载回来,放到 /tmp 目录下:# cd /tmp# wget/memcached/dist/memcached-1.4.0.tar.gz# wget/provos/libevent-1.2.tar.gz先安装libevent:# tar zxvf libevent-1.2.tar.gz# cd libevent-1.2# ./configure -prefix=/usr# make# make install然后看看我们的libevent是否安装成功:# ls -al /usr/lib | grep libeventlrwxrwxrwx 1 root root 21 11? 12 17:38 libevent-1.2.so.1 - libevent-1.2.so.1.0.3-rwxr-xr-x 1 root root 263546 11? 12 17:38 libevent-1.2.so.1.0.3-rw-r-r- 1 root root 454156 11? 12 17:38 libevent.a-rwxr-xr-x 1 root root 811 11? 12 17:38 libevent.lalrwxrwxrwx 1 root root 21 11? 12 17:38 libevent.so - libevent-1.2.so.1.0.3还不错,都安装上了,再来安装memcache,同时需要安装中指定libevent的安装位置:# cd /tmp# tar zxvf memcached-1.2.0.tar.gz# cd memcached-1.2.0# ./configure -with-libevent=/usr# make# make install如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。安装完成后会把memcached放到 /usr/local/bin/memcached ,我们看以下是否安装了:# ls -al /usr/local/bin/mem*-rwxr-xr-x 1 root root 137986 11? 12 17:39 /usr/local/bin/memcached-rwxr-xr-x 1 root root 140179 11? 12 17:39 /usr/local/bin/memcached-debug恩,安装完成了,我们来启动一个Memcache的服务器端:# /usr/local/bin/memcached -d -m 10 -u root -l 00 -p 12000 -c 256 -P /tmp/memcached.pid-d选项是启动一个守护进程,-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,-u是运行Memcache的用户,我这里是 root,-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址00,-p是设置Memcache监听 的端口,我这里设置了12000,最好是1024以上的端口,-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载 量来设定,-P是设置保存Memcache的pid文件,我这里是保存在/tmp/memcached.pid,如果要结束Memcache进程,执行:# kill cat /tmp/memcached.pid四.Memcache所有方法及参数详解Memcache:add - 添加一个值,如果已经存在,则返回falseMemcache:addServer - 添加一个可供使用的服务器地址Memcache:close - 关闭一个Memcache对象Memcache:connect - 创建一个Memcache对象memcache_debug - 控制调试功能Memcache:decrement - 对保存的某个key中的值进行减法操作Memcache:delete - 删除一个key值Memcache:flush - 清除所有缓存的数据Memcache:get - 获取一个key值Memcache:getExtendedStats - 获取进程池中所有进程的运行系统统计Memcache:getServerStatus - 获取运行服务器的参数Memcache:getStats - 返回服务器的一些运行统计信息Memcache:getVersion - 返回运行的Memcache的版本信息Memcache:increment - 对保存的某个key中的值进行加法操作Memcache:pconnect - 创建一个Memcache的持久连接对象Memcache:replace -对一个已有的key进行覆写操作Memcache:set - 添加一个值,如果已经存在,则覆写Memcache:setCompressThreshold - 对大于某一大小的数据进行压缩Memcache:setServerParams - 在运行时修改服务器的参数1.Memcache:add用法bool Memcache:add ( string $key , mixed $var , int $flag , int $expire )说明:如果$key不存在的时候,使用这个函数来存储$var的值。功能相同的函数是memcache_add()。参数:$key :将要存储的键值。$var :存储的值,字符型和整型会按原值保存,其他类型自动序列化以后保存。$flag:是否用MEMCACHE_COMPRESSED来压缩存储的值,true表示压缩,false表示不压缩。$expire:存储值的过期时间,如果为0表示不会过期,你可以用unix时间戳或者描述来表示从现在开始的时间,但是你在使用秒数表示的时候,不要超过2592000秒 (表示30天)。返回值:如果成功则返回 TRUE,失败则返回 FALSE。如果$key值已经存在,则会返回FALSE。 其他情况下Memcache:add()的用法类似于Memcache:set()。例子:add(var_key, test variable, false, 30);?2.Memcache:addServer用法bool Memcache:addServer ( string $host , int $port , bool $persistent , int $weight , int $timeout , int $retry_interval , bool $status , callback $failure_callback )说明:添加一个可供使用的服务器地址到连接池中,连接用Memcache:addServer打开,脚本执行完后自动关闭,或者可以用Memcache:close()手动关闭。相同函数是memcache_add_server()。当用这个方法的时候(相对于Memcache:connect()和 Memcache:pconnect()方法),网络连接只有等需要的时候才会建立,因此不会因为增加很多的服务器到连接池而增加系统负担,因为很多服务器可能没有使用。故障恢复会发生在这个方法执行的任何阶段,只要其他的服务器是正常的,这些连接请求的失败用户不会注意到。任何一种socket或者memcached服务器级的错误可以触发故障恢复。正常的客户端错误比如增加一个存在的键值不会引发故障恢复。参数:$host服务器的地址$port服务器端口$persistent是否是一个持久连接$weight这台服务器在所有服务器中所占的权重$timeout连接的持续时间$retry_interval连接重试的间隔时间,默认为15,设置为-1表示不进行重试$status控制服务器的在线状态$failure_callback允许设置一个回掉函数来处理错误信息。返回值:如果成功则返回 TRUE,失败则返回 FALSE。例子:addServer(memcache_host, 11211);$memcache-addServer(memcache_host2, 11211);$memcache_obj = memcache_connect(memcache_host, 11211);memcache_add_server($memcache_obj, memcache_host2, 11211);?3.Memcache:close用法bool Memcache:close ( void )说明:关闭memcache服务器连接。这个函数不会关闭长连接,长连接只有在web服务器关闭或者重启的时候才会关闭。相同的函数memcache_close()返回值:如果成功则返回 TRUE,失败则返回 FALSE。例子:connect(memcache_host, 11211);$memcache_obj-close();?4.Memcache:connect用法bool Memcache:connect ( string $host , int $port , int $timeout )说明:打开memcached服务器连接,建立一个到memcached服务器的连接,用Memcache:connect打开的连接会在脚本执行完毕后自动关闭。你也可以用Memcache:close()去关闭连接。相同的函数是memcache_connect()。参数:$host:指向memcached正在收听的链接的主机,这个参数会有另一种特殊的连接方式unix:/path/to/memcached.sock,即用unix的域名sockets,这种情况下,端口必须设置为0$port:指向memcached正在收听的链接的端口,用unix的域名sockets的情况下,端口必须设置为0$timeout:用于连接守护进程的秒数,当你改变默认的1秒的值的时候,你需要考虑一下,如果你的连接太慢的话,你可能会失去缓存的优势。返回值:如果成功则返回 TRUE,失败则返回 FALSE。例子:connect(memcache_host, 11211);?5.memcache:debugbool memcache_debug ( bool $on_off )说明:控制调试功能,前提是php在编译的时候使用了-enable-debug选项,否则这个函数不会有作用。参数:$on_off:true表示开启调试,false表示关闭调试返回值:如果php在编译的时候使用了-enable-debug选项,返回true,否则返回false6.Memcache:decrement用法int Memcache:decrement ( string $key , int $value )说明:Memcache:decremen方法的作用是对保存的某个key中的值进行减法操作,用法跟Memcache:increment类似。你也可以用memcache_decrement()函数。参数:Key:想要减少的键的名字Value:想要减少的值。返回值:如果成功,返回被减少后的值,如果失败返回false。例子:connect(localhost, 11211);$memcache-set(test_item, 8);$memcache-increment(test_item, 4);echo $memcache-decrement(test_item, 7);/ 显示 5?这个例子连Memcache:increment函数都一块演示了。7.Memcache:delete用法bool Memcache:delete ( string $key , int $timeout )说明:删除一个key值,如果参数$timeout被设置,那么存储的值会在设置的秒数以后过期,你也可以用函数memcache_delete()返回值:如果成功则返回 TRUE,失败则返回 FALSE。例子:connect(memcache_host, 11211);$memcache_obj-delete(key_to_delete, 10);?8.Memcache:flushbool Memcache:flush ( void )说明:清除所有缓存的数据。Memcache:flush实际上没有释放资源,它仅仅将所有的缓存标记为过期,这样可以使新的缓存来覆盖被占的内存空间。一样的函数是memcache_flush()返回值:如果成功则返回 TRUE,失败则返回 FALSE。例子:connect(memcache_host, 11211);$memcache_obj-flush();?9.Memcache:getstring Memcache:get ( string $key , int &$flags )array Memcache:get ( array $keys , array &$flags )说明:方法的作用是获取一个key值,key值可以是一个数组,结果会包含键值对。参数:$key是键值或者一个键的数组值。$flags如果这个参数存在,那么$flags跟写入这个参数的值相关,这些$flags 类似于Memcache:set()函数里的$flags。返回值:如果成功,则返回key对应的值,如果失败则返回false.例子:connect(memcache_host, 11211);$var = $memcache_obj-get(some_key);$memcache_obj = memcache_connect(memcache_host, 11211);$var = memcache_get($memcache_obj, Array(some_key, another_key);$memcache_obj = new Memcache;$memcache_obj-connect(memcache_host, 11211);$var = $memcache_obj-get(Array(some_key, second_key);?10.Memcache:getExtendedStatsarray Memcache:getExtendedStats ( string $type , int $slabid , int $limit )说明:获取进程池中所有进程的运行系统统计。相同函数是memcache_get_extended_stats()参数:$type表示要求返回的类型:reset, malloc, maps, cachedump, slabs, items, sizes;$slabid第一个参数设置为cachedump时使用的。$limit第一个参数设置为cachedump时使用的。返回值:如果成功,返回统计信息,失败会返回false例子:addServer(memcache_host, 11211); $memcache_obj-addServer(failed_host, 11211); $stats = $memcache_obj-getExtendedStats(); /slabs机制分配管理内存的情况$statsslab = $memcache_obj-getExtendedStats(slabs);?11.Memcache:getServerStatusint Memcache:getServerStatus ( string $host , int $port )说明:获取运行服务器的参数。返回一个服务器在线或者离线的状态。相同的函数是memcache_get_server_status()参数:$host:正在收听的连接的主机$port:正在收听的连接的主机的端口,默认是11211返回值:成功返回服务器状态,服务器没有启动会返回0,其他数字的时候表示服务器是启动状态的。例子:addServer(memcache_host, 11211);echo $memcache-getServerStatus(memcache_host, 11211);$memcache = memcache_connect(memcache_host, 11211);echo memcache_get_server_status($memcache, memcache_host, 11211);?12.Memcache:getStatsarray Memcache:getStats ( string $type , int $slabid , int $limit )说明:返回服务器的一些运行统计信息。相同的函数是memcache_get_stats()参数:$type表示要求返回的类型:reset, malloc, maps, cachedump, slabs, items, sizes;$slabid第一个参数设置为cachedump时使用的。$limit第一个参数设置为cachedump时使用的。返回值:成功返回服务器的统计信息数组,失败返回false。13.Memcache:setbool Memcache:set ( string $key , mixed $var , int $flag , int $expire )说明:向key存储一个元素值为 var。参数expire是以秒为单位的失效时间, 如果设置为0表明该元素永不过期(但是它可能会因为为了给其他项分配空间而被删除)。如果你希望存储的元素 经过压缩(使用zlib),你可以设置flag的值为MEMCACHE_COMPRESSED参数:key :要设置值的key。 var :要存储的值,字符串和数值直接存储,其他类型序列化后存储。 flag :使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)。 expire :当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)。 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE.例子:connect(”, 11211); $mem-set(key, This is a test!, 0, 60); $val = $mem-get(key); echo $val; ?14.Memcache:getVers
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东高考化学试题(解析版)
- 销售工作题目大全及答案
- 葡萄酒盲品知识培训
- 2025联名合伙合同书范本版
- 2025高考物理试题分类汇编:万有引力与宇宙航行(解析版)
- 2025综合雇佣合同范本
- 2025-2026学年人教版六年级数学上册应用题平均数问题专项练习题【含答案】
- 物业安全操作试题及答案
- 2025车辆买卖协议合同
- 2025年公共自行车锁车器设备项目合作计划书
- 小学班级培优辅差课后服务计划
- 火力发电原理课件
- 学校五常法管理制度
- 2025年七一党课-作风建设永远在路上学习教育党课
- 国际托育政策比较-洞察及研究
- 武术五步拳教学课件
- T/HQPA 5-2019防倾覆弹性滑板支座
- 茶馆承包协议书
- 93阅兵仪式观后感400字(9篇)
- 产后出血护理授课课件
- 行动研究的历史演变、思想内涵及实践意义
评论
0/150
提交评论