Memcache文档.docx

上传人:b****6 文档编号:4085185 上传时间:2022-11-27 格式:DOCX 页数:17 大小:61.05KB
下载 相关 举报
Memcache文档.docx_第1页
第1页 / 共17页
Memcache文档.docx_第2页
第2页 / 共17页
Memcache文档.docx_第3页
第3页 / 共17页
Memcache文档.docx_第4页
第4页 / 共17页
Memcache文档.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Memcache文档.docx

《Memcache文档.docx》由会员分享,可在线阅读,更多相关《Memcache文档.docx(17页珍藏版)》请在冰豆网上搜索。

Memcache文档.docx

Memcache文档

Memcache使用说明文档

 

修订记录:

版本号

修订人

修订日期

修订描述

V1.0

庄欠林

2012-03-07

第一版

目录

目录2

一.简介3

二.工作原理4

三.安装5

1.windows下安装memcache5

2.linux下安装memcache6

四.Memcache所有方法及参数详解9

1.Memcache:

:

add用法10

2.Memcache:

:

addServer用法10

3.Memcache:

:

close用法11

4.Memcache:

:

connect用法12

5.memcache:

:

debug12

6.Memcache:

:

decrement用法13

7.Memcache:

:

delete用法13

8.Memcache:

:

flush14

9.Memcache:

:

get15

10.Memcache:

:

getExtendedStats15

11.Memcache:

:

getServerStatus16

12.Memcache:

:

getStats17

13.Memcache:

:

set17

14.Memcache:

:

getVersion18

15.Memcache:

:

increment18

16.Memcache:

:

pconnect19

五.其他20

一.简介

memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表(如下图),它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Memcache是的一个项目,最早是为LiveJournal服务的,最初为了加速LiveJournal访问速度而开发的,后来被很多大型的网站采用。

目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。

它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!

基于memcache作者对分布式cache的理解和解决方案。

memcache完全可以用到其他地方比如分布式数据库,分布式计算等领域。

Memcachedhash表形式(key=value对)

KEY

VALUE

变量1

可以标量

变量2

可以是数组

变量3

可以是对象

变量n

可以是任意类型

name

Zhangan

age

10

email

Aaa@

ccc@

eee@

二.工作原理

首先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地址:

(1).将下载的压缩包解压放某个盘下面,比如在c:

\memcached

(2).在终端(也即cmd命令界面)下输入‘c:

\memcached\memcached.exe-dinstall’安装

(3).再输入:

‘c:

\memcached\memcached.exe-dstart’启动。

NOTE:

以后memcached将作为windows的一个服务每次开机时自动启动。

这样服务器端已经安装完毕了。

(4).启动memcached服务器:

在cmd命令界面中输入:

‘c:

\memcached\memcached.exe-l127.0.0.1-m32-dstart’

-l:

是指定ip地址,不写的话默认为本机

-m:

最大内存使用,单位MB。

默认64MB,最大好像2G

(5).下载php_memcache.dll,请自己查找对应的php版本的文件

(6).在C:

\winnt\php.ini加入一行‘extension=php_memcache.dll’

(7).重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!

(8).如果安装完,看一下任务管理器,出现一下情况,则说明memcache真正安装成功.

(9)memcached的基本设置:

-p监听的端口

-l连接的IP地址,默认是本机

-dstart启动memcached服务

-drestart重起memcached服务

-dstop|shutdown关闭正在运行的memcached服务

-dinstall安装memcached服务

-duninstall卸载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。

下载:

另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.2。

(如果你的系统已经安装了libevent,可以不用安装)

官网:

http:

//www.monkey.org/~provos/libevent/

下载:

http:

//www.monkey.org/~provos/libevent-1.2.tar.gz

我分别把两个东东下载回来,放到/tmp目录下:

#cd/tmp

#wget

#wgethttp:

//www.monkey.org/~provos/libevent-1.2.tar.gz

先安装libevent:

#tarzxvflibevent-1.2.tar.gz

#cdlibevent-1.2

#./configure--prefix=/usr

#make

#makeinstall

然后看看我们的libevent是否安装成功:

#ls-al/usr/lib|greplibevent

lrwxrwxrwx1root   root    2111?

?

1217:

38libevent-1.2.so.1->libevent-1.2.so.1.0.3

-rwxr-xr-x  1root   root    26354611?

?

1217:

38libevent-1.2.so.1.0.3

-rw-r--r--     1root   root    45415611?

?

1217:

38libevent.a

-rwxr-xr-x  1root   root    81111?

?

1217:

38libevent.la

lrwxrwxrwx1root   root    2111?

?

1217:

38libevent.so->libevent-1.2.so.1.0.3

还不错,都安装上了,再来安装memcache,同时需要安装中指定libevent的安装位置:

#cd/tmp

#tarzxvfmemcached-1.2.0.tar.gz

#cdmemcached-1.2.0

#./configure--with-libevent=/usr

#make

#makeinstall

如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。

安装完成后会把memcached放到/usr/local/bin/memcached,我们看以下是否安装了:

#ls-al/usr/local/bin/mem*

-rwxr-xr-x1root   root  13798611?

?

1217:

39/usr/local/bin/memcached

-rwxr-xr-x1root   root  14017911?

?

1217:

39/usr/local/bin/memcached-debug

恩,安装完成了,

我们来启动一个Memcache的服务器端:

#/usr/local/bin/memcached-d-m10  -uroot-l192.168.0.200-p12000-c256-P/tmp/memcached.pid

-d选项是启动一个守护进程,

-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,

-u是运行Memcache的用户,我这里是root,

-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,

-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,

-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,

-P是设置保存Memcache的pid文件,我这里是保存在/tmp/memcached.pid,如果要结束Memcache进程,执行:

#kill`cat/tmp/memcached.pid`

四.Memcache所有方法及参数详解

Memcache:

:

add-添加一个值,如果已经存在,则返回false

Memcache:

:

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用法

boolMemcache:

:

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()。

例子:

php

$memcache_obj=memcache_connect("localhost",11211);

memcache_add($memcache_obj,'var_key','testvariable',false,30);

$memcache_obj->add('var_key','testvariable',false,30);

?

>

2.Memcache:

:

addServer用法

boolMemcache:

:

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。

例子:

php

$memcache=newMemcache;

$memcache->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用法

boolMemcache:

:

close(void)

说明:

关闭memcache服务器连接。

这个函数不会关闭长连接,长连接只有在web服务器关闭或者重启的时候才会关闭。

相同的函数memcache_close()

返回值:

如果成功则返回TRUE,失败则返回FALSE。

例子:

php

$memcache_obj=memcache_connect('memcache_host',11211);

memcache_close($memcache_obj);

$memcache_obj=newMemcache;

$memcache_obj->connect('memcache_host',11211);

$memcache_obj->close();

?

>

4.Memcache:

:

connect用法

boolMemcache:

:

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。

例子:

php

$memcache_obj=memcache_connect('memcache_host',11211);

$memcache=newMemcache;

$memcache->connect('memcache_host',11211);

?

>

5.memcache:

:

debug

boolmemcache_debug(bool$on_off)

说明:

控制调试功能,前提是php在编译的时候使用了-enable-debug选项,否则这个函数不会有作用。

参数:

$on_off:

true表示开启调试,false表示关闭调试

返回值:

如果php在编译的时候使用了-enable-debug选项,返回true,否则返回false

6.Memcache:

:

decrement用法

intMemcache:

:

decrement(string$key[,int$value])

说明:

Memcache:

:

decremen方法的作用是对保存的某个key中的值进行减法操作,用法跟Memcache:

:

increment类似。

你也可以用memcache_decrement()函数。

参数:

Key:

想要减少的键的名字

Value:

想要减少的值。

返回值:

如果成功,返回被减少后的值,如果失败返回false。

例子:

php

$memcache=newMemcache;

$memcache->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用法

boolMemcache:

:

delete(string$key[,int$timeout])

说明:

删除一个key值,如果参数$timeout被设置,那么存储的值会在设置的秒数以后过期,你也可以用函数memcache_delete()

返回值:

如果成功则返回TRUE,失败则返回FALSE。

例子:

php

$memcache_obj=memcache_connect('memcache_host',11211);

memcache_delete($memcache_obj,'key_to_delete',10);

$memcache_obj=newMemcache;

$memcache_obj->connect('memcache_host',11211);

$memcache_obj->delete('key_to_delete',10);

?

>

8.Memcache:

:

flush

boolMemcache:

:

flush(void)

说明:

清除所

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1