|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
欢迎大家来到仓酷云论坛!Memcache复杂先容:
Memcached是一个自在和开放源码、高功能、散布的内存工具缓存体系。可用于减速静态web使用步伐,加重数据库的负载。经由过程在内存里保护一个一致的伟大的hash表,可以来存储各类格局的数据,包含图象、视频、文件和数据库查询的了局等。
这里的memcache要跟php中的memcache区分开来,php中的memcache是php的撑持扩大,而memcached是办事端主步伐文件,办事端装置步伐,假如要利用memcache来缓存体系,memcache和memcached都要装置。Memcache是一种内存缓存,把常常存取的数据大概工具,缓存在内存中,内存中缓存的这些数据是经由过程API的体例被存取的,数据就像是一个年夜的hash表,经由过程缓存经常使用的数据大概工具,以此来加重数据库的压力,进步网站的呼应速率。普通的讲,客户端收回哀求抵达memcache,假如哀求的数据存在memcache中,那末就间接将哀求的数据前往,不再对数据举行任何操纵。假如哀求的数据不存在memcache中,那就往查询数据库,把从数据库中猎取的数据前往给客户端,同时把数据缓存一份到memcache中。每次更新数据库的同时,更新memcache中的数据,包管memcache中的数据与数据库中的数据分歧。
memcache的复杂道理表示图
-------------------------------------------------------------------------
装置设置
复杂的先容完了道理,入手下手装置设置,基本是lamp,这里就不先容了
memcache、memcached
[root@localhostsofts]#wgethttp://memcached.谷歌code.com/files/memcached-1.4.13.tar.gz
[root@localhostsofts]#wgethttp://pecl.php.net/get/memcache-2.2.6.tgz
[root@localhostsofts]#lsmemcache*-l
-rw-r--r--1rootroot35957Oct42010memcache-2.2.6.tgz------------------memcache的php扩大
-rw-r--r--1rootroot320751Feb32012memcached-1.4.13.tar.gz----------------------memcache办事端软件
装置memcached
装置该软件时必要libevent的撑持,为了避免软件版本太低,以是不倡议yum装置
装置libevent
[root@localhostsofts]#wgethttp://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
[root@localhostsofts]#tarxflibevent-2.0.21-stable.tar.gz-C/usr/src/
[root@localhostsofts]#cd/usr/src/libevent-2.0.21-stable/
[root@localhostlibevent-2.0.21-stable]#./configure&&make&&makeinstall
装置memcached
[root@localhostsofts]#tarxfmemcached-1.4.13.tar.gz-C/usr/src/
[root@localhostsofts]#cd/usr/src/memcached-1.4.13/
[root@localhostmemcached-1.4.13]#./configure--with-libevent=/usr/local&&make&&makeinstall
[root@localhostrun]#memcached-m32m-p11211-d-uroot-P/var/run/memcached.pid-c256----------启动memcached历程
-p利用的tcp端口,默许为11211;-m最年夜内存块,默许为64M;-d作为保卫历程在背景运转;-c最年夜运转的并发数,默许为1024;-P设置保留memcached的pid文件;
-u暗示运转memcached的用户,默许不克不及由root启动,以是以后用户为root时,必需要指定;-l是监听办事器的地点,假如有多个地点的话。
[root@localhostmemcached-1.4.13]#ps-e|grepmem
16499?00:00:00memcached
[root@localhostmemcached-1.4.13]#netstat-tunlp|grepmem
tcp000.0.0.0:112110.0.0.0:*LISTEN16499/memcached
udp000.0.0.0:112110.0.0.0:*16499/memcached
[root@localhostmemcached-1.4.13]#
封闭memcached
[root@localhostrun]#cat/var/run/memcached.pid
16532
[root@localhostrun]#kill-916532
装置php的memcache扩大
[root@localhostsofts]#tarxfmemcache-2.2.6.tgz-C/usr/src/
[root@localhostsofts]#cd/usr/src/memcache-2.2.6/
[root@localhostmemcache-2.2.6]#ls
CREDITSmemcache.php
READMEmemcache_consistent_hash.c
config.m4memcache_queue.c
config.w32memcache_queue.h
config9.m4memcache_session.c
example.phpmemcache_standard_hash.c
memcache.cphp_memcache.h
memcache.dsp
[root@localhostmemcache-2.2.6]#phpize
Configuringfor:
PHPApiVersion:20090626
ZendModuleApiNo:20090626
ZendExtensionApiNo:220090626
[root@localhostmemcache-2.2.6]#ls
CREDITSconfig.submemcache.php
Makefile.globalconfig.w32memcache_consistent_hash.c
READMEconfig9.m4memcache_queue.c
acinclude.m4configurememcache_queue.h
aclocal.m4configure.inmemcache_session.c
autom4te.cacheexample.phpmemcache_standard_hash.c
buildinstall-shmissing
config.guessltmain.shmkinstalldirs
config.h.inmemcache.cphp_memcache.h
config.m4memcache.dsprun-tests.php
[root@localhostmemcache-2.2.6]#
[root@localhostmemcache-2.2.6]#./configure--enable-memcache--with-php-config=/usr/local/bin/php-config
[root@localhostmemcache-2.2.6]#make
[root@localhostmemcache-2.2.6]#makeinstall
Installingsharedextensions:/usr/local/lib/php/extensions/no-debug-zts-20090626/
[root@localhostmemcache-2.2.6]#cdmodules/
[root@localhostmodules]#ls
memcache.so
[root@localhostmodules]#pwd
/usr/src/memcache-2.2.6/modules
接上去修正php设置文件php.ini
[root@localhostlib]#viphp.ini
extension="/usr/local/lib/php/extensions/no-debug-zts-20090626/"
extension=memcache.so---------------在文件中加上这两行
测试memcache的php扩大是不是装置乐成
[root@localhostlib]#memcached-m32m-p11211-uroot-P/var/run/memcached.pid-c256-d
[root@localhostlib]#/etc/init.d/apachestart
[root@localhost~]#cd/www/--------------------/www是我的apache的DocumentRoot
[root@localhostwww]#vimem_test.php
<?php
$mem=newMemcache;
$mem->connect("127.0.0.1",11211);
$mem->set(hello,world,0,60);
$val=$mem->get(hello);
echo$val;
?>
[root@localhostwww]#elinks--dump127.0.0.1/mem_test.php
world
假如能够看到world,那你的memcachephp扩大就乐成了
-------------------------------------------------------------------------
memcache与php的共同利用
php与memcache分离测试代码
[root@localhostwww]#viphp-mem.php
<?php
//connect
$mem=newMemcache;--------初始化一个memcache工具
$mem->connect(localhost,11211);---------------毗连到memcache办事器,IP及端口
//savedata
$mem->set(key1,thisisfirstvalue,0,60);-------key数据的key,用来定位一个数据;第二个参数是必要保留的数据内容;第三个参数是标志,通常是0,第四个参数是混村的无效工夫,超时就会被扫除。
$val=$mem->get(key1);-------------get就是要猎取数据,猎取key1数据
echo"Getkey1value:".$val."<br/>";
//replacedata
$mem->replace(key1,thisisreplacevalue,0,60);
$val=$mem->get(key1);
echo"Getkey1value:".$val."<br/>";
//savedatagroup
$arr=array(aa,bb,cc);
$val=$mem->get(key1);
echo"Getkey1value:".$val."<br/>";
//replacedata
$mem->replace(key1,thisisreplacevalue,0,60);-------------交换key1
$val=$mem->get(key1);-------------保留key1
echo"Getkey1value:".$val."<br/>";
//savedatagroup
$arr=array(aa,bb,cc);
$mem->set(key2,$arr,0,60);
$val2=$mem->get(key2);
echo"Getkey2value:";
print_r($val2);
echo"<br/>";
//deletedata
$mem->delete(key1);-----------删除key1
$val=$mem->get(key1);--------------保留key1
echo"getkey1value:".$val."<br/>";
//closeconnetions
$mem->close();--------封闭
?>
"php-mem.php"[New]36L,678Cwritten
[root@localhostwww]#elinks--dump127.0.0.1/php-mem.php
Getkey1value:thisisfirstvalue
Getkey1value:thisisreplacevalue
Getkey2value:Array([0]=>aa[1]=>bb[2]=>cc)
getkey1value:
如今就乐成了。
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们! |
|