memcache类的扩张函数,memcache缓存详解

Memcache — Memcache类

那篇作品首要介绍了PHP中的Memcache,从Memcache简介开首,详细讲解了如Memcache和memcached的不相同、PHP的
Memcache全部操作方法、每一种操作方法的详尽分解等,供给的爱侣能够参见下 
一、Memcache简介 
Memcache是danga.com的二个品种,最早是为 LiveJournal
服务的,近期满世界众两个人使用那些缓存项目来营造筑组织调大负荷的网站,来分担数据库的下压力。它能够答应任意四个一连,使用非阻塞的互联网IO。由于它的劳作体制是在内部存款和储蓄器中开发一块空间,然后建立3个HashTable,Memcached管理那么些HashTable,所以速度非常的慢。

一、Memcache简介
Memcache是danga.com的二个品种,最早是为 LiveJournal
服务的,近来全世界众多少人选取这一个缓存项目来创设筑组织调大负荷的网站,来平均分摊数据库的压力。它能够答应任意多少个再而三,使用非阻塞的互联网IO。由于它的做事机制是在内存中开发一块空间,然后建立3个HashTable,Memcached管理那些HashTable,所以速度尤其快。

memcached是高质量的分布式的内部存款和储蓄器缓存服务器。由国外社区网站LIVEJOU宝马X5NAL的开发组织开发。

/****连接****/
1.Memcache::connect – 创制八个Memcache对象
语法:bool Memcache::connect ( string $host [, int $port [, int
$timeout ]] )
固然成功则赶回 TRUE,失利则赶回 FALSE
案例参考:$memcache_obj->connect(’memcache_host’, 11211);

二、Memcache和memcached的区别

二、Memcache和memcached的区别

行使指标:

2.Memcache::pconnect – 创制3个Memcache的持久连接对象
语法:bool Memcache::pconnect ( string $host [, int $port [, int
$timeout ]] )
一经成功则赶回 TRUE,失利则赶回 FALSE
参数:
$host:指向memcached正在听取的链接的主机,这几个参数会有另一种十三分的连接方式unix:///path/to/memcached.sock,即用unix的域名sockets,那种状态下,端口必须设置为0
$port:指向memcached正在听取的链接的端口,用unix的域名sockets的情景下,端口必须安装为0
$timeout:用于连接守护进程的秒数,当您转移默许的1秒的值的时候,你供给考虑一下,假设您的连接太慢的话,你恐怕会失掉缓存的优势。

为啥会有Memcache和memcached三种名称?其实Memcache是其一类型的称呼,而memcached是它服务器端的主程序文件名,知道笔者的情致了把~~~~。3个是项目名称,2个是主程序文件名,在网上看到了累累人不通晓,于是混用了。

何以会有Memcache和memcached二种名称?其实Memcache是其一类型的称呼,而memcached是它服务器端的主程序文件名,知道本人的情致了把~~~~。三个是项目名称,2个是主程序文件名,在网上看看了众几人不晓得,于是混用了。

经过缓存数据库查询结果,减少数据库的拜会次数,以拉长动态web应用的进度、升高可增加性。

/****添加****/ ※注意添加对象时要new 类名
1.Memcache::set – 添加3个值,假如已经存在,则覆写
语法:bool Memcache::set ( string $key , mixed $var [, int $flag [,
int $expire ]] )
累加1个值,假使已经存在,则覆写;要是成功则赶回 TRUE,失败则赶回
FALSE。

③ 、Memcache的劳务器端和客户端安装

③ 、Memcache的劳务器端和客户端安装

memcache
是二个专擅和开花源代码、高质量、分布式的内部存款和储蓄器对象缓存系统。用于加速动态web应用程序,裁减数据库负载。

2.Memcache::add – 添加贰个值,如若已经存在,则赶回false
语法:bool Memcache::add ( string $key , mixed $var [, int $flag [,
int $expire ]] )
一旦成功则赶回 TRUE,败北则赶回
FALSE。如若$key值已经存在,则会重临FALSE
案例参考:$memcache_obj->add(’var_key’, ’test variable’, false,
30);

分成五个进度:memcache服务器端的装置和memcached客户端的设置。

分成三个过程:memcache服务器端的设置和memcached客户端的设置。

亚洲必赢官网 1

3.Memcache::replace -对三个已有的key实行覆写操作
语法:bool Memcache::replace ( string $key , mixed $var [, int $flag
[, int $expire ]] )
一旦成功则赶回 TRUE,退步则赶回
FALSE。借使$key值已经存在,则会回来FALSE。
参数:
$key :将要存款和储蓄的键值。
$var
:存款和储蓄的值,字符型和整型会按原值保存,其余项目自动连串化今后保存。
$flag:是否用MEMCACHE_COMPRESSED来减弱存款和储蓄的值,true表示压缩,false表示不减弱。
$expire:存款和储蓄值的过期时间,假诺为0代表不会晚点,你能够用unix时间戳或然描述来表示从前天起首的小时,但是你在选择秒数表示的时候,不要跨越2593000秒
(表示30天)。

所谓服务器端的安装正是在服务器(一般都以linux系统)上设置Memcache完毕数据的囤积。

所谓服务器端的设置就是在服务器(一般都是linux系统)上安装Memcache实现多少的贮存。

memcahce的特征

/****获取值****/
1.Memcache::get – 获取1个key值
语法:string Memcache::get ( string $key [, int &$flags ] )
      array Memcache::get ( array $keys [, array &$flags ] )
若果成功,则赶回key对应的值,固然退步则赶回false.
参数:
$key是键值或许1个键的数组值。
$flags假设这几个参数存在,那么$flags跟写入那几个参数的值相关,那么些$flags
类似于Memcache::set()函数里的$flags。

所谓客户端的安装就是指php(也许别的程序,Memcache还有此外科学的api接口提供)去选拔服务器端的Memcache提供的函数,须求php添加扩充。

所谓客户端的安装正是指php(大概其余程序,Memcache还有任何科学的api接口提供)去选择劳务器端的Memcache提供的函数,必要php添加扩展。

壹 、基于C/S架构,协议简单

/****删除****/
1.Memcache::delete – 删除叁个key值
语法:bool Memcache::delete ( string $key [, int $timeout ] )
一经成功则赶回 TRUE,退步则赶回 FALSE。

四 、PHP的Memcache客户端全体办法计算

肆 、PHP的Memcache客户端全体办法总计

② 、基于libevent事件处理{libevent是二个基于事件触发的互连网库,适用于windows、Linux、bsd(Unix的衍生系统)等八种平台}

2.Memcache::flush – 清除全数缓存的数据
语法:bool Memcache::flush ( void )
只要成功则赶回 TRUE,败北则赶回 FALSE。

memcache函数全部的法门列表如下: 
Memcache::add – 添加三个值,就算已经存在,则赶回false 
Memcache::addServer – 添加三个可供使用的服务器地址 
Memcache::close – 关闭二个Memcache对象 
Memcache::connect – 创立2个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 -对2个已有的key实行覆写操作 
Memcache::set – 添加二个值,倘使已经存在,则覆写 
Memcache::setCompressThreshold – 对当先某一大小的数目进行压缩 
Memcache::setServerParams – 在运转时修改服务器的参数

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::decrement – 对保留的某部key中的值举行减法操作
语法:int Memcache::decrement ( string $key [, int $value ] )
假使成功,重临被缩减后的值,假使失利重临false。

5、PHP的Memcache操作方法分解

 

四 、基于客户端的memcached分布式

2.Memcache::increment – 对保留的某部key中的值进行加法操作
语法:int Memcache::increment ( string $key [, int $value ] )
借使成功,重临被缩减后的值,如若退步重回false。
参数:
Key:想要收缩的键的名字
Value:想要减弱的值
案例参考:$memcache->increment(’test_item’, 4);

Memcache::add用法 
代码如下:bool Memcache::add ( string $key , mixed $var [, int $flag [,
int $expire ]] )

五 、PHP的Memcache操作方法分解

适用场景

/****关闭****/
1.Memcache::close – 关闭二个Memcache对象
语法:bool Memcache::close ( void )
假诺成功则赶回 TRUE,退步则赶回 FALSE。

说明: 
若果$key不存在的时候,使用那几个函数来囤积$var的值。功用雷同的函数是memcache_add()。

Memcache::add用法

壹 、需求分布式布置的(什么是分布式:假诺3个义务有十二个头任务,将那十二个头使命分别独立置于11个服务器,大大裁减任务履行时间,)

/****配置****/
1.Memcache::addServer – 添加1个可供使用的服务器地址
语法:bool Memcache::addServer ( string $host [, int $port [, bool
$persistent [, int $weight [, int$timeout [, int $retry_interval [,
bool $status [, callback $failure_callback ]]]]]]] )
若果成功则赶回 TRUE,战败则赶回 FALSE。
参数:
$persistent是或不是是一个持久连接
$weight那台服务器在装有服务器中所占的权重

参数: 
$key :将要存款和储蓄的键值。 
$var
:存款和储蓄的值,字符型和整型会按原值保存,其余门类自动类别化以后保存。 
$flag:是否用MEMCACHE_COMPRESSED来压缩存储的值,true表示压缩,false表示不打折扣。 
$expire:存款和储蓄值的过期时间,假诺为0意味不会晚点,你能够用unix时间戳或许描述来表示从今天初步的年华,不过你在采用秒数表示的时候,不要跨越2592000秒
(表示30天)。

bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )

二 、必要频仍造访同一数量

2.Memcache::setServerParams – 在运维时修改服务器的参数
语法:bool Memcache::setServerParams ( string $host [, int $port [, int
$timeout [, int$retry_interval [, bool $status [, callback
$failure_callback ]]]]] )
假诺成功则赶回 TRUE,退步则赶回 FALSE。
参数:
$host服务器的地方
$port服务器端口
$timeout连接的持续时间
$retry_interval连接重试的间隔时间,默许为15,设置为-1表示不实行重试
$status控制伏务器的在线状态
$failure_callback允许设置一个回掉函数来处理错误消息。

返回值: 
借使成功则赶回 TRUE,战败则赶回
FALSE。假使$key值已经存在,则会回来FALSE。
其余情状下Memcache::add()的用法类似于Memcache::set()。 
例子:

说明:
就算$key不设有的时候,使用那么些函数来存款和储蓄$var的值。成效雷同的函数是memcache_add()。

③ 、必要多中国少年共产党享的

/****获得参数****/
2.Memcache::getServerStatus – 获取运维服务器的图景
语法:int Memcache::getServerStatus ( string $host [, int $port ] )
成功再次来到服务器状态,服务器并未运行会重回0,别的数字的时候表示服务器是开发银行状态的。
参数:
$host:正在听取的总是的主机
$port正在听取的接二连三的主机的端口,私下认可是11211

代码如下: 
add(‘var_key’, ‘test variable’, false, 30); 
?>

参数:
$key :将要存款和储蓄的键值。
$var
:存款和储蓄的值,字符型和整型会按原值保存,其余类型自动种类化以往保存。
$flag:是否用MEMCACHE_COMPRESSED来减弱存款和储蓄的值,true表示压缩,false表示不优惠扣。
$expire:存款和储蓄值的逾期时间,倘使为0代表不会晚点,你能够用unix时间戳恐怕描述来表示从以后起头的时日,可是你在应用秒数表示的时候,不要跨越259贰仟秒
(表示30天)。

介绍C/S架构

3.Memcache::getStats – 重返服务器的一些周转总括音信
语法:array Memcache::getStats ([ string $type [, int $slabid [, int
$limit ]]] )
参数:
$type表示需要回到的门类:reset, malloc, maps, cachedump, slabs, items,
sizes;
$slabid第3个参数设置为”cachedump”时使用的。
$limit第②个参数设置为”cachedump”时行使的。

Memcache::addServer用法 
代码如下:bool Memcache::addServer ( string $host [, int $port [, bool
$persistent [, int $weight [, int$timeout [, int $retry_interval [,
bool $status [, callback $failure_callback ]]]]]]] )

返回值:
设若成功则赶回 TRUE,失利则赶回
FALSE。借使$key值已经存在,则会回去FALSE。
别的情形下Memcache::add()的用法类似于Memcache::set()。
例子:

亚洲必赢官网 2

4.Memcache::getVersion – 重回运营的Memcache的版本消息
语法:string Memcache::getVersion ( void )
事业有成再次来到服务器的版本音讯,退步的时候回来false。

说明: 
累加2个可供使用的服务器地址到连接池中,连接用Memcache::addServer打开,脚本执行完后机动关闭,可能能够用
Memcache::close()手动关闭。相同函数是memcache_add_server()。 
当用那么些方法的时候(相对于Memcache::connect()和
Memcache::pconnect()方法),互连网连接唯有等要求的时候才会建立,由此不会因为增添很多的服务器到连接池而充实系统承担,因为不少服务器大概没有接纳。 
故障复苏会爆发在那几个措施执行的此外等级,只要任何的服务器是正规的,那些连接请求的挫折用户不会专注到。任何一种socket或然memcached服务器级的不当能够触发故障复苏。寻常的客户端错误比如扩张3个设有的键值不会掀起故障恢复生机。

<?php
$memcache_obj = memcache_connect(”localhost”, 11211);
memcache_add($memcache_obj, 'var_key', 'test variable', false, 30);
$memcache_obj->add('var_key', 'test variable', false, 30);
?>

安装运转(见PDF文书档案)

 

参数: 
$host服务器的地点 
$port服务器端口 
$persistent是还是不是是贰个坚韧不拔连接 
$weight那台服务器在颇具服务器中所占的权重 
$timeout连接的持续时间 
$retry_interval连接重试的间隔时间,暗中同意为15,设置为-1代表不开始展览重试 
$status控战胜务器的在线状态 
$failure_callback允许设置二个回掉函数来处理错误新闻。

Memcache::addServer用法

各样指令的利用

/****调试****/
1.memcache_debug – 控制调节和测试功效
语法:bool memcache_debug ( bool $on_off )
倘若php在编写翻译的时候利用了-enable-debug选项,再次回到true,不然重返false
参数:
$on_off:true表示开启调节和测试,false表示关闭调节和测试

返回值: 
比方成功则赶回 TRUE,退步则赶回 FALSE。

bool Memcache::addServer ( string $host [, int $port [, bool $persistent [, int $weight [, int$timeout [, int $retry_interval [, bool $status [, callback $failure_callback ]]]]]]] )

set/add/replace/delete/get/gets/cas/stats/stats
items/append/prepend/flush_all等等

2.Memcache::getExtendedStats – 获取进度池中具备进度的运行系统总计
语法:array Memcache::getExtendedStats ([ string $type [, int $slabid
[, int $limit ]]] )
如果成功,重返总计新闻,退步会重临false
参数:
$type代表须求回到的项目:reset, malloc, maps, cachedump, slabs, items,
sizes;
$slabid第①个参数设置为”cachedump”时使用的。
$limit第二个参数设置为”cachedump”时采纳的。

例子: 
代码如下:addServer(‘memcache_host’, 11211); 
$memcache->addServer(‘memcache_host2′, 11211);

 

memcahced一些特色和限量

/****压缩****/
1.Memcache::setCompressThreshold – 对超越某一大小的多寡开始展览削减
语法:bool Memcache::setCompressThreshold ( int $threshold [, float
$min_savings ] )
假如成功则赶回 TRUE,失利则赶回 FALSE。
参数:
setCompressThreshold方法有多少个参数,第三个参数表示处理数据大小的临界点,第四个参数表示压缩的比重,暗许为0.2。

$memcache_obj = memcache_connect(‘memcache_host’, 11211); 
memcache_add_server($memcache_obj, ‘memcache_host2′, 11211); 
?>

说明:
增进2个可供使用的服务器地址到连接池中,连接用Memcache::addServer打开,脚本执行完后活动关闭,恐怕能够用Memcache::close()手动关闭。相同函数是memcache_add_server()。
当用那些艺术的时候(相对于Memcache::connect()和
Memcache::pconnect()方法),互连网连接唯有等急需的时候才会创制,因而不会因为扩充很多的服务器到连接池而充实系统负责,因为众多服务器可能没有运用。
故障复苏会产生在那些办法执行的别的等级,只要任何的服务器是正规的,那么些连接请求的挫折用户不会小心到。任何一种socket或然memcached服务器级的一无所长能够触发故障复苏。常常的客户端错误比如扩大1个留存的键值不会引发故障复苏。

①在Memcached 中能够保存的item数据量是从未有过限定的,只有内部存款和储蓄器丰裕

Memcache::close用法

参数:
$host服务器的地方
$port服务器端口
$persistent是不是是叁个持久连接
$weight那台服务器在颇具服务器中所占的权重
$timeout连接的持续时间
$retry_interval连接重试的间隔时间,暗中同意为15,设置为-1意味着不进行重试
$status控击溃务器的在线状态
$failure_callback允许设置三个回掉函数来处理错误音讯。

②Memcached单进程最大使用内部存款和储蓄器为2G,要动用更多内部存款和储蓄器,能够分多少个端口开启多个Memcached进程

bool Memcache::close ( void )

返回值:
如若成功则赶回 TRUE,失利则赶回 FALSE。

③最大30天的数量过期时间,
设置为永久的也会在那么些日子过期,常量REALTIME_MAXDELTA

说明: 
关闭memcache服务器连接。这几个函数不会倒闭长连接,长连接唯有在web服务器关闭或然重启的时候才会倒闭。相同的函数
memcache_close() 
返回值: 
只要成功则赶回 TRUE,失败则赶回 FALSE。 
例子:

例子:

④60*60*24*30 控制

代码如下: 
connect(‘memcache_host’, 11211); 
$memcache_obj->close(); 
?>

<?php
$memcache = new Memcache;
$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);
?> 

⑤最大键长为250字节,大于该长度无法储存,常量KEY_MAX_LENGTH 250 控制

Memcache::connect用法 
代码如下:bool Memcache::connect ( string $host [, int $port [, int
$timeout ]] )

 Memcache::close用法

⑥单个item最大数目是1MB,超越1MB数目不予存款和储蓄,常量POWEEvoque_BLOCK 1048576
实行支配,

说明: 
开拓memcached服务器连接,建立3个到memcached服务器的总是,用Memcache::connect打开的连接会在本子执行达成后活动关闭。你也得以用Memcache::close()去关闭连接。相同的函数是memcache_connect()。 
参数: 
$host:指向memcached正在听取的链接的主机,这些参数会有另一种奇特的连接形式unix:///path/to
/memcached.sock,即用unix的域名sockets,那种气象下,端口必须设置为0 
$port:指向memcached正在听取的链接的端口,用unix的域名sockets的意况下,端口必须安装为0 
$timeout:用于连接守护进程的秒数,当你改变默许的1秒的值的时候,你需求考虑一下,假设你的连接太慢的话,你大概会错过缓存的优势。

bool Memcache::close ( void ) 

⑦它是暗中同意的slab大小

返回值: 
一旦成功则赶回 TRUE,战败则赶回 FALSE。 
例子: 
代码如下: 
connect(‘memcache_host’, 11211);

 说明:
关闭memcache服务器连接。那一个函数不会倒闭长连接,长连接只有在web服务器关闭可能重启的时候才会关闭。相同的函数memcache_close()
返回值:
比方成功则赶回 TRUE,退步则赶回 FALSE。
例子:

⑧最大而且连接数是200,通过conn_init()中的freetotal
举行支配,最大软连接数是1024,通过

?>

<?php
$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_close($memcache_obj);
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$memcache_obj->close();
?>

⑨settings.maxconns=1024
进行控制⑩跟空间占据相关的参数:settings.factor=1.25,
settings.chunk_size=48, 影响slab的数码占用和步进方式

memcache::debug

 

PHP的Memcache客户端全数办法总计

代码如下:bool memcache_debug ( bool $on_off )

Memcache::connect用法

memcache函数全体的主意列表如下:
Memcache::add – 添加1个值,借使已经存在,则赶回false
Memcache::addServer – 添加一个可供使用的服务器地址
Memcache::close – 关闭一个Memcache对象
Memcache::connect – 创造一个Memcache对象
memcache_debug – 控制调节和测试功能
Memcache::decrement – 对保留的某部key中的值进行减法操作
Memcache::delete – 删除1个key值
Memcache::flush – 清除全部缓存的数据
Memcache::get – 获取二个key值
Memcache::getExtendedStats – 获取过程池中颇具进度的运转体系总括
Memcache::getServerStatus – 获取运维服务器的参数
Memcache::getStats – 重返服务器的片段运营总结消息
Memcache::getVersion – 重回运转的Memcache的版本音信
Memcache::increment – 对保留的某部key中的值举办加法操作
Memcache::pconnect – 创建2个Memcache的有始有终连接对象
Memcache::replace -对三个已某个key实行覆写操作
Memcache::set – 添加三个值,尽管已经存在,则覆写
Memcache::setCompressThreshold – 对当先某第一次全国代表大会小的数目进行压缩
Memcache::setServerParams – 在运作时修改服务器的参数 

说明: 
支配调节和测试成效,前提是php在编写翻译的时候利用了-enable-debug选项,不然这么些函数不会有效果。 
参数: 
$on_off:true表示开启调节和测试,false表示关闭调节和测试 
返回值: 
假定php在编写翻译的时候使用了-enable-debug选项,重临true,否则再次回到false

bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )

PHP的Memcache操作方法分解

Memcache::decrement用法 
代码如下:int Memcache::decrement ( string $key [, int $value ] )

 说明:

Memcache::add用法

说明: 
Memcache::decremen方法的效益是对封存的某些key中的值进行减法操作,用法跟Memcache::increment类似。 
您也得以用memcache_亚洲必赢官网 ,decrement()函数。 
参数: 
Key:想要收缩的键的名字 
Value:想要收缩的值。

打开memcached服务器连接,建立2个到memcached服务器的接连,用Memcache::connect打开的连接会在本子执行实现后活动关闭。你也足以用Memcache::close()去关闭连接。相同的函数是memcache_connect()。
参数:
$host:指向memcached正在听取的链接的主机,那么些参数会有另一种极度的三番五次格局unix:///path/to/memcached.sock,即用unix的域名sockets,这种情形下,端口必须安装为0
$port:指向memcached正在听取的链接的端口,用unix的域名sockets的情状下,端口必须设置为0
$timeout:用于连接守护进度的秒数,当您转移默许的1秒的值的时候,你需求考虑一下,假诺你的连天太慢的话,你或然会失掉缓存的优势。

 代码如下:

返回值: 
假定成功,重临被缩减后的值,即使退步再次来到false。 
例子:

返回值:
比方成功则赶回 TRUE,失利则赶回 FALSE。
例子:

bool Memcache::add ( string $key , mixed $var [memcache类的扩张函数,memcache缓存详解。, int $flag [, int
$expire ]] )

代码如下: 
connect(‘localhost’, 11211); 
$memcache->set(‘test_item’, 8); 
$memcache->increment(‘test_item’, 4); 
echo $memcache->decrement(‘test_item’, 7); 
// 显示 5 
?>

<?php
$memcache_obj = memcache_connect('memcache_host', 11211);
$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);
?> 

说明:
若果$key不设有的时候,使用那些函数来储存$var的值。功能雷同的函数是memcache_add()。

以此例子连Memcache::increment函数都一块演示了。

 

参数:
$key :将要存款和储蓄的键值。
$var
:存款和储蓄的值,字符型和整型会按原值保存,别的类别自动种类化以往保存。
$flag:是否用MEMCACHE_COMPRESSED来收缩存储的值,true表示压缩,false表示不减价扣。
$expire:存款和储蓄值的逾期时间,假如为0象征不会晚点,你能够用unix时间戳或然描述来代表从现行反革命始发的光阴,但是你在运用秒数表示的时候,不要超过2593000秒
(表示30天)。

Memcache::delete用法

memcache::debug

返回值:
要是成功则赶回 TRUE,退步则赶回
FALSE。借使$key值已经存在,则会回到FALSE。
其余景况下Memcache::add()的用法类似于Memcache::set()。
例子:

代码如下:bool Memcache::delete ( string $key [, int $timeout ] )

bool memcache_debug ( bool $on_off )

 代码如下:

说明: 
去除3个key值,借使参数$timeout被设置,那么存款和储蓄的值会在安装的秒数现在晚点,你也得以用函数
memcache_delete()

 

<?php
$memcache_obj = memcache_connect(”localhost”, 11211);
memcache_add($memcache_obj, ‘var_key’, ‘test variable’, false, 30);
$memcache_obj->add(‘var_key’, ‘test variable’, false, 30);
?>

返回值: 
若是成功则赶回 TRUE,战败则赶回 FALSE。

说明:
决定调节和测试功用,前提是php在编写翻译的时候使用了-enable-debug选项,不然那个函数不会有效益。
参数:
$on_off:true表示开启调节和测试,false表示关闭调节和测试
返回值:
假使php在编写翻译的时候利用了-enable-debug选项,重临true,不然再次来到false

Memcache::addServer用法

例子: 
代码如下: 
connect(‘memcache_host’, 11211); 
$memcache_obj->delete(‘key_to_delete’, 10);

Memcache::decrement用法

 代码如下:

?>

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

bool Memcache::addServer ( string $host [, int $port [, bool
$persistent [, int $weight [, int$timeout [, int $retry_interval [,
bool $status [, callback $failure_callback ]]]]]]] )

Memcache::flush 
代码如下:bool Memcache::flush ( void )

说明:
Memcache::decremen方法的法力是对封存的某些key中的值举办减法操作,用法跟Memcache::increment类似。
你也得以用memcache_decrement()函数。
参数:
Key:想要减弱的键的名字
Value:想要减弱的值。

说明:
累加1个可供使用的服务器地址到连接池中,连接用Memcache::addServer打开,脚本执行完后自动关闭,恐怕能够用Memcache::close()手动关闭。相同函数是memcache_add_server()。
当用这么些点子的时候(相对于Memcache::connect()和
Memcache::pconnect()方法),互联网连接只有等必要的时候才会成立,由此不会因为扩张很多的服务器到连接池而增添系统负责,因为不少服务器恐怕没有使用。
故障恢复会时有产生在这一个艺术执行的其余等级,只要任何的服务器是健康的,这么些连接请求的挫败用户不会注意到。任何一种socket只怕memcached服务器级的失实能够触发故障苏醒。平日的客户端错误比如扩展1个存在的键值不会吸引故障苏醒。

说明: 
清除全体缓存的数码。Memcache::flush实际上并未自由能源,它独自将有所的缓存标记为过期,那样能够使新的缓存来覆盖被占的内存空间。一样的函数是memcache_flush()

返回值:
如若成功,再次回到被压缩后的值,就算战败再次来到false。
例子:

参数:
$host服务器的地点
$port服务器端口
$persistent是不是是三个百折不挠连接
$weight那台服务器在颇具服务器中所占的权重
$timeout连接的持续时间
$retry_interval连接重试的间隔时间,暗中认可为15,设置为-1代表不开始展览重试
$status控战胜务器的在线状态
$failure_callback允许设置3个回掉函数来处理错误新闻。

返回值: 
假如成功则赶回 TRUE,退步则赶回 FALSE。

<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->set('test_item', 8);
$memcache->increment('test_item', 4);
echo $memcache->decrement('test_item', 7);
// 显示 5
?>

返回值:
一旦成功则赶回 TRUE,失利则赶回 FALSE。

例子:

 那么些例子连Memcache::increment函数都一块演示了。

例子:

代码如下: 
connect(‘memcache_host’, 11211);

Memcache::delete用法

 代码如下:

$memcache_obj->flush();

复制代码 代码如下:

<?php
$memcache = new Memcache;
$memcache->addServer(‘memcache_host’, 11211);
$memcache->addServer(‘memcache_host2′, 11211);

?>

bool Memcache::delete ( string $key [, int $timeout ] )

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
memcache_add_server($memcache_obj, ‘memcache_host2′, 11211);
?>

Memcache::get

说明:
删去3个key值,假设参数$timeout被设置,那么存储的值会在安装的秒数以往晚点,你也能够用函数memcache_delete()

Memcache::close用法

代码如下: 
string Memcache::get ( string $key [, int &$flags ] )

返回值:
一旦成功则赶回 TRUE,战败则赶回 FALSE。

bool Memcache::close ( void )

array Memcache::get ( array $keys [, array &$flags ] )

例子:

说明:
闭馆memcache服务器连接。那几个函数不会倒闭长连接,长连接唯有在web服务器关闭恐怕重启的时候才会倒闭。相同的函数memcache_close()
返回值:
假若成功则赶回 TRUE,战败则赶回 FALSE。
例子:

说明: 
主意的效劳是赢得3个key值,key值能够是3个数组,结果会含有键值对。

<?php
$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_delete($memcache_obj, 'key_to_delete', 10);
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$memcache_obj->delete('key_to_delete', 10);
?> 

代码如下:

参数: 
$key是键值大概贰个键的数组值。 
$flags如果那么些参数存在,那么$flags跟写入这几个参数的值相关,这么些$flags
类似于Memcache::set()函数里的$flags。

 

<?php
$memcache_obj = memcache_connect(‘memcache_host’, 11211);
memcache_close($memcache_obj);
$memcache_obj = new Memcache;
$memcache_obj->connect(‘memcache_host’, 11211);
$memcache_obj->close();
?>

返回值: 
假定成功,则赶回key对应的值,假设战败则赶回false. 
例子: 
代码如下: 
connect(‘memcache_host’, 11211); 
$var = $memcache_obj->get(‘some_key’);

Memcache::flush

Memcache::connect用法

$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’));

bool Memcache::flush ( void )

bool Memcache::connect ( string $host [, int $port [, int $timeout
]] )

?>

说明:
清除全部缓存的数目。Memcache::flush实际上并未自由财富,它唯有将装有的缓存标记为过期,那样能够使新的缓存来掩盖被占的内部存款和储蓄器空间。一样的函数是memcache_flush()

说明:
开辟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秒的值的时候,你须要考虑一下,倘诺你的一而再太慢的话,你大概会失掉缓存的优势。

Memcache::getExtendedStats 
代码如下:array Memcache::getExtendedStats ([ string $type [, int
$slabid [, int $limit ]]] )

返回值:
万一成功则赶回 TRUE,退步则赶回 FALSE。

返回值:
若果成功则赶回 TRUE,失利则赶回 FALSE。
例子:

说明: 
得到进度池中全数进度的运作体系计算。相同函数是memcache_get_extended_stats()

例子:

代码如下:

参数: 
$type代表供给重回的品类:reset, malloc, maps, cachedump, slabs, items,
sizes; 
$slabid第②个参数设置为”cachedump”时利用的。 
$limit第二个参数设置为”cachedump”时采用的。 
返回值: 
如若成功,重返总计信息,失败会回到false

<?php

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

memcache_flush($memcache_obj);

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

$memcache_obj->flush();

?>

<?php

例子: 
代码如下: 
addServer(‘memcache_host’, 11211); 
$memcache_obj->addServer(‘failed_host’, 11211);

 

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
$memcache = new Memcache;
$memcache->connect(‘memcache_host’, 11211);

$stats = $memcache_obj->getExtendedStats(); 
//slabs机制分配管理内部存款和储蓄器的地方 
$statsslab = $memcache_obj->getExtendedStats(slabs);

Memcache::get

?>

?>

复制代码 代码如下:

memcache::debug

Memcache::getServerStatus

string Memcache::get ( string $key [, int &$flags ] )

 代码如下:

代码如下:int Memcache::getServerStatus ( string $host [, int $port ] )

array Memcache::get ( array $keys [, array &$flags ] )

bool memcache_debug ( bool $on_off )

说明: 
获得运转服务器的参数。重回四个服务器在线只怕离线的境况。相同的函数是memcache_get_server_status()

说明:
方法的效劳是取得二个key值,key值能够是多少个数组,结果会蕴藏键值对。

说明:
决定调节和测试功用,前提是php在编写翻译的时候使用了-enable-debug选项,不然这几个函数不会有效益。
参数:
$on_off:true表示开启调节和测试,false表示关闭调节和测试
返回值:
若果php在编写翻译的时候利用了-enable-debug选项,返回true,不然重临false

参数: 
$host:正在听取的连日的主机 
$port正在听取的接连的主机的端口,暗中认可是11211

参数:
$key是键值可能二个键的数组值。
$flags要是那个参数存在,那么$flags跟写入这几个参数的值相关,那一个$flags
类似于Memcache::set()函数里的$flags。

Memcache::decrement用法

返回值: 
打响再次来到服务器状态,服务器并未运行会重回0,其余数字的时候表示服务器是开发银行状态的。

返回值:
即使成功,则赶回key对应的值,若是战败则赶回false.
例子:

 代码如下:

例子: 
代码如下: 
addServer(‘memcache_host’, 11211); 
echo $memcache->getServerStatus(‘memcache_host’, 11211);

<?php
$memcache_obj = memcache_connect('memcache_host', 11211);
$var = memcache_get($memcache_obj, 'some_key');

$memcache_obj = new Memcache;
$memcache_obj->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'));

?> 

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

$memcache = memcache_connect(‘memcache_host’, 11211); 
echo memcache_get_server_status($memcache, ‘memcache_host’, 11211);

 

说明:
Memcache::decremen方法的成效是对保留的某部key中的值进行减法操作,用法跟Memcache::increment类似。
您也得以用memcache_decrement()函数。
参数:
Key:想要裁减的键的名字
Value:想要减少的值。

?>

Memcache::getExtendedStats

返回值:
借使成功,再次回到被压缩后的值,如若退步再次回到false。
例子:

Memcache::getStats

复制代码 代码如下:

 代码如下:

代码如下:array Memcache::getStats ([ string $type [, int $slabid [,
int $limit ]]] )

array Memcache::getExtendedStats ([ string $type [, int $slabid [,
int $limit ]]] )

<?php
$memcache = new Memcache;
$memcache->connect(‘localhost’, 11211);
$memcache->set(‘test_item’, 8);
$memcache->increment(‘test_item’, 4);
echo $memcache->decrement(‘test_item’, 7);
// 显示 5
?>

说明: 
再次回到服务器的某个运作总结新闻。相同的函数是memcache_get_stats()

说明:
赢得进度池中持有进度的运作系统总括。相同函数是memcache_get_extended_stats()

其一例子连Memcache::increment函数都一块演示了。

参数: 
$type表示供给回到的档次:reset, malloc, maps, cachedump, slabs, items,
sizes; 
$slabid第③个参数设置为”cachedump”时利用的。 
$limit第⑧个参数设置为”cachedump”时采纳的。

参数:
$type代表供给回到的种类:reset, malloc, maps, cachedump, slabs, items,
sizes;
$slabid第③个参数设置为”cachedump”时利用的。
$limit第①个参数设置为”cachedump”时选拔的。
返回值:
一旦成功,再次回到计算音讯,战败会回来false

Memcache::delete用法

Memcache::getVersion 
代码如下:string Memcache::getVersion ( void )

例子:

代码如下:

说明: 
回去运营的Memcache的版本新闻。相同函数memcache_get_version()

<?php
$memcache_obj = new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->addServer('failed_host', 11211);

$stats = $memcache_obj->getExtendedStats();
//slabs机制分配管理内存的情况
$statsslab = $memcache_obj->getExtendedStats(slabs);

?> 

bool Memcache::delete ( string $key [, int $timeout ] )

返回值: 
水到渠成再次来到服务器的版本信息,失败的时候回来false。

 

说明:
删去八个key值,借使参数$timeout被设置,那么存款和储蓄的值会在安装的秒数以往晚点,你也得以用函数memcache_delete()

例子: 
代码如下: 
connect(‘memcache_host’, 11211); 
echo $memcache->getVersion();

Memcache::getServerStatus

返回值:
只要成功则赶回 TRUE,退步则赶回 FALSE。

$memcache = memcache_connect(‘memcache_host’, 11211); 
echo memcache_get_version($memcache); 
?>

int Memcache::getServerStatus ( string $host [, int $port ] )

例子:

Memcache::increment

说明:
收获运行服务器的参数。再次来到三个服务器在线大概离线的情事。相同的函数是memcache_get_server_status()

 代码如下:

代码如下:int Memcache::increment ( string $key [, int $value ] )

参数:
$host:正在听取的接二连三的主机
$port正在听取的连日的主机的端口,暗许是11211

<?php

对保留的某部key中的值举办加法操作 
用法参考Memcache::decrement

返回值:
成功重回服务器状态,服务器并未运转会重临0,其余数字的时候表示服务器是开发银行状态的。

$memcache_obj = memcache_connect(‘memcache_host’, 11211);

Memcache::pconnect

例子:

memcache_delete($memcache_obj, ‘key_to_delete’, 10);

代码如下:bool Memcache::pconnect ( string $host [, int $port [, int
$timeout ]] )

复制代码 代码如下:

$memcache_obj = new Memcache;
$memcache_obj->connect(‘memcache_host’, 11211);
$memcache_obj->delete(‘key_to_delete’, 10);

说明: 
始建1个Memcache的百折不回连接对象 
用法与Memcache::connect()相似,分歧点地点是Memcache::pconnect是创设的恒久连接。那么些延续在剧本执行完可能Memcache::close()函数运维也不会被关闭。与它一样的函数是memcache_pconnect()

<?php
$memcache = new Memcache;
$memcache->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);

?> 

?>

参数: 
$host:指向memcached正在听取的链接的主机,那几个参数会有另一种新鲜的总是方式unix:///path/to
/memcached.sock,即用unix的域名sockets,这种景观下,端口必须安装为0 
$port:指向memcached正在听取的链接的端口,用unix的域名sockets的景观下,端口必须安装为0 
$timeout:用于连接守护进程的秒数,当您转移私下认可的1秒的值的时候,你必要考虑一下,尽管你的连日太慢的话,你大概会错过缓存的优势。

 

Memcache::flush

返回值: 
如若成功则赶回 TRUE,失败则赶回 FALSE 
代码如下: 
pconnect(‘memcache_host’, 11211);

Memcache::getStats

 代码如下:

?>

复制代码 代码如下:

bool Memcache::flush ( void )

Memcache::replace 
代码如下:bool Memcache::replace ( string $key , mixed $var [, int $flag
[, int $expire ]] )

array Memcache::getStats ([ string $type [, int $slabid [, int $limit
]]] )

说明:
铲除全体缓存的数据。Memcache::flush实际上并未自由能源,它独自将全部的缓存标记为过期,那样能够使新的缓存来覆盖被占的内部存款和储蓄器空间。一样的函数是memcache_flush()

说明: 
对1个已部分key实行覆写操作。相同函数是memcache_replace()

说明:
归来服务器的片段运行总括消息。相同的函数是memcache_get_stats()

返回值:
一经成功则赶回 TRUE,退步则赶回 FALSE。

参数: 
$key :将要存款和储蓄的键值。 
$var
:存款和储蓄的值,字符型和整型会按原值保存,其余项目自动种类化以往保存。 
$flag:是否用MEMCACHE_COMPRESSED来压缩存款和储蓄的值,true表示压缩,false表示不减弱。 
$expire:存储值的晚点时间,假诺为0意味不会晚点,你能够用unix时间戳恐怕描述来表示从明日开始的岁月,不过你在应用秒数表示的时候,不要跨越259两千秒
(表示30天)。

参数:
$type表示供给再次回到的品种:reset, malloc, maps, cachedump, slabs, items,
sizes;
$slabid第5个参数设置为”cachedump”时利用的。
$limit第叁个参数设置为”cachedump”时采用的。

例子:

返回值: 
万10%功则赶回 TRUE,失利则赶回
FALSE。假如$key值已经存在,则会回来FALSE。 
代码如下: 
replace(“test_key”, “some variable”, false, 30);

Memcache::getVersion

 代码如下:

?>

复制代码 代码如下:

<?php

Memcache::set 
代码如下:bool Memcache::set ( string $key , mixed $var [, int $flag [,
int $expire ]] )

string Memcache::getVersion ( void )

$memcache_obj = memcache_connect(‘memcache_host’, 11211);

说明: 
加上一个值,假设已经存在,则覆写。相同函数是memcache_set()

说明:
再次来到运营的Memcache的版本音信。相同函数memcache_get_version()

memcache_flush($memcache_obj);

参数: 
$key :将要存款和储蓄的键值。 
$var
:存储的值,字符型和整型会按原值保存,别的种类自动类别化未来保存。 
$flag:是否用MEMCACHE_COMPRESSED来减弱存款和储蓄的值,true表示压缩,false表示不促销扣。 
$expire:存款和储蓄值的超时时间,假如为0意味不会晚点,你能够用unix时间戳或然描述来代表从前几日开头的小时,但是你在动用秒数表示的时候,不要当先259贰仟秒
(表示30天)。

返回值:
事业有成重回服务器的版本音讯,战败的时候回来false。

$memcache_obj = new Memcache;
$memcache_obj->connect(‘memcache_host’, 11211);

返回值: 
尽管成功则赶回 TRUE,失利则赶回 FALSE。

例子:

$memcache_obj->flush();

例子:

复制代码 代码如下:

?>

代码如下: 
$memcache_obj = new Memcache; 
$memcache_obj->connect(‘memcache_host’, 11211); 
$memcache_obj->set(‘var_key’, ‘some really big variable’,
MEMCACHE_COMPRESSED, 50); 
echo $memcache_obj->get(‘var_key’);

<?php
$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);
echo $memcache->getVersion();
$memcache = memcache_connect('memcache_host', 11211);
echo memcache_get_version($memcache);
?> 

Memcache::get

Memcache::setCompressThreshold 
代码如下:bool Memcache::setCompressThreshold ( int $threshold [, float
$min_savings ] )

Memcache::increment

 代码如下:

说明: 
对超越某一大小的数码进行压缩。相同的函数是memcache_set_compress_threshold()

复制代码 代码如下:

string Memcache::get ( string $key [, int &$flags ] )

参数: 
setCompressThreshold方法有几个参数,第一个参数表示处理数量大小的临界点,第一个参数表示压缩的比例,暗中同意为0.2。

int Memcache::increment ( string $key [, int $value ] )

array Memcache::get ( array $keys [, array &$flags ] )

返回值: 
设若成功则赶回 TRUE,退步则赶回 FALSE。

对保留的某部key中的值举行加法操作
用法参考Memcache::decrement

说明:
格局的功效是取得叁个key值,key值能够是五个数组,结果会含有键值对。

例子: 
代码如下: 
addServer(‘memcache_host’, 11211); 
$memcache_obj->setCompressThreshold(20000, 0.2);

Memcache::pconnect

参数:
$key是键值或然二个键的数组值。
$flags假使那些参数存在,那么$flags跟写入那几个参数的值相关,那一个$flags
类似于Memcache::set()函数里的$flags。

$memcache_obj = memcache_connect(‘memcache_host’, 11211); 
memcache_set_compress_threshold($memcache_obj, 20000, 0.2);

复制代码 代码如下:

返回值:
即使成功,则赶回key对应的值,固然退步则赶回false.
例子:

?>

bool Memcache::pconnect ( string $host [, int $port [, int $timeout
]] )

 代码如下:

Memcache::setServerParams

说明:
创建三个Memcache的有始有终连接对象
用法与Memcache::connect()相似,分裂点地方是Memcache::pconnect是建立的有始有终连接。那一个三番五次在本子执行完或然Memcache::close()函数运维也不会被关闭。与它一律的函数是memcache_pconnect()

<?php

复制代码 代码如下:bool Memcache::setServerParams ( string $host [, int
$port [, int $timeout [, int$retry_interval [, bool $status [,
callback $failure_callback ]]]]] )

参数:
$host:指向memcached正在听取的链接的主机,这一个参数会有另一种特殊的总是情势unix:///path/to/memcached.sock,即用unix的域名sockets,那种气象下,端口必须安装为0
$port:指向memcached正在听取的链接的端口,用unix的域名sockets的事态下,端口必须设置为0
$timeout:用于连接守护进度的秒数,当您转移暗中认可的1秒的值的时候,你供给考虑一下,要是你的连天太慢的话,你可能会错过缓存的优势。

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
$var = memcache_get($memcache_obj, ‘some_key’);

说明: 
在运作时修改服务器的参数。相同函数是memcache_set_server_params()。

返回值:
假诺成功则赶回 TRUE,失利则赶回 FALSE

$memcache_obj = new Memcache;
$memcache_obj->connect(‘memcache_host’, 11211);
$var = $memcache_obj->get(‘some_key’);

参数: 
$host服务器的地点 
$port服务器端口 
$timeout连接的持续时间 
$retry_interval连接重试的间隔时间,私下认可为15,设置为-1象征不进行重试 
$status控制伏务器的在线状态 
$failure_callback允许设置1个回掉函数来处理错误音信。

<?php

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

$memcache_obj = new Memcache;
$memcache_obj->pconnect('memcache_host', 11211);

?> 

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
$var = memcache_get($memcache_obj, Array(‘some_key’,
‘another_key’));

返回值: 
若是成功则赶回 TRUE,退步则赶回 FALSE。

 

$memcache_obj = new Memcache;
$memcache_obj->connect(‘memcache_host’, 11211);
$var = $memcache_obj->get(Array(‘some_key’, ‘second_key’));

例子: 
代码如下: 
addServer(‘memcache_host’, 11211, false, 1, 1, -1, false);

Memcache::replace

?>

// 把服务器设成在线 
$memcache->setServerParams(‘memcache_host’, 11211, 1, 15, true,
‘_callback_memcache_failure’);

复制代码 代码如下:

Memcache::getExtendedStats

$memcache_obj = memcache_connect(‘memcache_host’, 11211); 
memcache_set_server_params($memcache_obj, ‘memcache_host’, 11211,
1, 15, true, ‘_callback_memcache_failure’);

bool Memcache::replace ( string $key , mixed $var [, int $flag [, int
$expire ]] )

 代码如下:

?>

说明:
对三个已某些key举行覆写操作。相同函数是memcache_replace()

array Memcache::getExtendedStats ([ string $type [, int $slabid [,
int $limit ]]] )

陆 、综合运用实例 
代码如下: 
connect(“db.nowamagic.net”, 12000); 
//保存数据 
$mem->set(‘key1′, ‘This is first value’, 0, 60); 
$val = $mem->get(‘key1′); 
echo “Get key1 value: ” . $val .” 
“; 
//替换数据 
$mem->replace(‘key1′, ‘This is replace value’, 0, 60); 
$val = $mem->get(‘key1′); 
echo “Get key1 value: ” . $val . “ 
“; 
//保存数组 
$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’); 
$mem->set(‘key2′, $arr, 0, 60); 
$val2 = $mem->get(‘key2′); 
echo “Get key2 value: “; 
print_r($val2); 
echo “ 
“; 
//删除数据 
$mem->delete(‘key1′); 
$val = $mem->get(‘key1′); 
echo “Get key1 value: ” . $val . “ 
“; 
//清除全部数据 
$mem->flush(); 
$val2 = $mem->get(‘key2′); 
echo “Get key2 value: “; 
print_r($val2); 
echo “ 
“; 
//关闭连接 
$mem->close(); 
?>

参数:
$key :将要存款和储蓄的键值。
$var
:存储的值,字符型和整型会按原值保存,其余项目自动系列化今后保存。
$flag:是否用MEMCACHE_COMPRESSED来缩短存款和储蓄的值,true表示压缩,false表示不减价扣。
$expire:存款和储蓄值的逾期时间,假若为0代表不会晚点,你能够用unix时间戳或许描述来代表从现行反革命始于的小时,可是你在使用秒数表示的时候,不要超过259两千秒
(表示30天)。

说明:
取得进度池中具备进度的运维种类总括。相同函数是memcache_get_extended_stats()

一旦不荒谬的话,浏览器将出口: 
代码如下: 
Get key1 value: This is first value 
Get key1 value: This is replace value 
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc
[3] => ddd ) 
Get key1 value: 
Get key2 value:

返回值:
如若成功则赶回 TRUE,失利则赶回
FALSE。若是$key值已经存在,则会回去FALSE。

参数:
$type表示须要回到的门类:reset, malloc, maps, cachedump, slabs, items,
sizes;
$slabid首个参数设置为”cachedump”时采取的。
$limit第①个参数设置为”cachedump”时接纳的。
返回值:
一旦成功,重临总计消息,退步会回去false

7、实例程序代码分析

<?php

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_replace($memcache_obj, "test_key", "some variable", false, 30);
$memcache_obj->replace("test_key", "some variable", false, 30);

?>

例子:

初阶化3个Memcache的靶子:$mem = new Memcache; 
连接受大家的Memcache服务器端,第③个参数是服务器的IP地址,也得以是主机名,第一个参数是Memcache的开放的端口:$mem->connect(“192.168.0.200″,
13000); 
封存多个数码到Memcache服务器上,第三个参数是多少的key,用来恒定三个数额,第三个参数是供给保留的多少内容,那里是3个字符串,第多少个参数是2个标志,一般安装为0只怕MEMCACHE_COMPRESSED就行了,第多个参数是数据的有效期,正是说数据在那个日子内是卓有成效的,要是过去那个小时,那么会被Memcache服务器端清除掉那个数量,单位是秒,若是设置为0,则是恒久有效,大家那边设置了60,正是一秒钟有效时间:$mem->set(‘key1‘,
‘This is first value’, 0, 60); 
从Memcache服务器端获取一条数据,它唯有三个参数,便是索要获取数据的key,我们那里是上一步设置的key1,今后赢得那个数据后输出输出:

Memcache::set

代码如下:

代码如下: 
$val = $mem->get(‘key1′); 
echo “Get key1 value: ” . $val;

复制代码 代码如下:

<?php
$memcache_obj = new Memcache;
$memcache_obj->addServer(‘memcache_host’, 11211);
$memcache_obj->addServer(‘failed_host’, 11211);

以后是应用replace方法来替换掉下边key1的值,replace方法的参数跟set是同样的,但是第七个参数key1是必须是要替换数据内容的key,最终输出了: 
代码如下: 
$mem->replace(‘key1′, ‘This is replace value’, 0, 60); 
$val = $mem->get(‘key1′); 
echo “Get key1 value: ” . $val;

bool Memcache::set ( string $key , mixed $var [, int $flag [, int
$expire ]] )

$stats = $memcache_obj->getExtendedStats();
//slabs机制分配管理内部存款和储蓄器的情形
$statsslab = $memcache_obj->getExtendedStats(slabs);

无差别于的,Memcache也是足以保留数组的,上面是在Memcache上面保存了3个数组,然后拿走回来并出口: 
代码如下: 
$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’); 
$mem->set(‘key2′, $arr, 0, 60); 
$val2 = $mem->get(‘key2′); 
print_r($val2);

说明:
添加一个值,借使已经存在,则覆写。相同函数是memcache_set()

?>

近年来剔除2个多少,使用delte接口,参数正是多少个key,然后就可见把Memcache服务器这一个key的多少删除,最终输出的时候没有结果: 
代码如下:$mem->delete(‘key1′); 
$val = $mem->get(‘key1′); 
echo “Get key1 value: ” . $val . “ 
“;

参数:
$key :将要存款和储蓄的键值。
$var
:存款和储蓄的值,字符型和整型会按原值保存,别的连串自动连串化现在保存。
$flag:是否用MEMCACHE_COMPRESSED来压缩存款和储蓄的值,true表示压缩,false表示不减弱。
$expire:存储值的晚点时间,要是为0意味着不会晚点,你能够用unix时间戳或许描述来表示从今后启幕的时辰,可是你在应用秒数表示的时候,不要超过2593000秒
(表示30天)。

Memcache::getServerStatus

最终我们把具有的保留在Memcache服务器上的数额都免去,会发现数目都并未了,最终输出key2的多少为空,最终关闭连接: 
代码如下:$mem->flush(); 
$val2 = $mem->get(‘key2′); 
echo “Get key2 value: “; 
print_r($val2); 
echo “ 
“;

返回值:
设若成功则赶回 TRUE,失败则赶回 FALSE。

代码如下:

八 、什么日期利用Memcache和Memcache的采纳条件

例子:

int Memcache::getServerStatus ( string $host [, int $port ] )

使用Memcache的网站一般流量都是相比较大的,为了化解数据库的压力,让Memcache作为三个缓存区域,把一部分消息保存在内存中,在前者能够高效的拓展存取。那么一般的点子即是集聚在怎样分担数据库压力和举行分布式,究竟单台Memcache的内部存款和储蓄器容积的蝇头的。小编那里大致提议本人的私家观点,未经实践,权当参考。

$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50);
echo $memcache_obj->get('var_key');

说明:
获得运转服务器的参数。重回3个服务器在线大概离线的情状。相同的函数是memcache_get_server_status()

分布式应用

 

参数:
$host:正在听取的连天的主机
$port正在听取的总是的主机的端口,暗中同意是11211

Memcache本来扶助分布式,我们客户端稍加改造,更好的帮助。大家的key能够适量拓展有规律的包装,比如以user为主的网站以来,每一个用户都有User
ID,那么能够依照定点的ID来进展领取和存取,比如1开始的用户保存在第1台Memcache服务器上,以2初阶的用户的多寡保存在第②胎
Mecache服务器上,存取数据都先根据User ID来进行对应的更换和存取。 
而是那些有通病,就是索要对User
ID进行判定,如若工作不一致,也许别的类型的利用,恐怕不是那么方便,那么能够遵照自身的莫过于业务来展开考虑,只怕去想更适用的办法。

Memcache::setCompressThreshold

返回值:
中标再次来到服务器状态,服务器并未运营会重返0,别的数字的时候表示服务器是开发银行状态的。

压缩数据库压力

复制代码 代码如下:

例子:

以此好不不难比较关键的,全体的数目大约都以保存在数据库当中的,每一回频仍的存取数据库,导致数据库质量极具下跌,不能够同时服务越多的用户,比如
MySQL,尤其频仍的锁表,那么让Memcache来平摊数据库的压力呢。大家须要一种变更相比小,并且能够不会广阔转移前端的不二法门来进行改动最近的架构。 
本人考虑的一种不难方法: 
后端的数据库操作模块,把持有的Select操作提取出来(update/delete/insert不管),然后把相应的SQL进行对应的
hash算法计算得出三个hash数据key(比如MD5或许SHA),然后把那个key去Memcache中寻觅数据,若是这一个数目不设有,表明还没写入到缓存中,那么从数据库把多少提取出来,四个是数组类格式,然后把数量在set到Memcache中,key正是其一SQL的hash值,然后相应的设置多少个失效时间,比如3个小时,那么1个钟头中的数据都以从缓存中领到的,有效削减数据库的压力。缺点是多少不实时,当数码做了修改之后,无法实时到前者呈现,并且还有或许对内部存款和储蓄器占用比较大,究竟每趟select出来的多寡数量恐怕相比巨大,这一个是内需考虑的因素。

bool Memcache::setCompressThreshold ( int $threshold [, float
$min_savings ] )

代码如下:

九、Memcache的安全

说明:
对超越某一大小的数量开始展览压缩。相同的函数是memcache_set_compress_threshold()

<?php
$memcache = new Memcache;
$memcache->addServer(‘memcache_host’, 11211);
echo $memcache->getServerStatus(‘memcache_host’, 11211);

我们地点的Memcache服务器端都以平素通过客户端连接后间接操作,没有其它的印证进程,那样借使服务器是直接揭破在网络上的话是比较危急,轻则数据外泄被此外毫不相关人士查看,重则服务器被侵入,因为Mecache是以root权限运作的,况且里面或许存在一些大家不解的bug可能是缓冲区溢出的场地,那个都以我们不解的,所以危险性是能够预言的。为了安全起见,笔者做两点建议,可以微微的警务装备黑客的凌犯只怕数额的泄漏。

参数:
setCompressThreshold方法有八个参数,第③个参数表示处理多少大小的临界点,第②个参数表示压缩的百分比,私下认可为0.2。

$memcache = memcache_connect(‘memcache_host’, 11211);
echo memcache_get_server_status($memcache, ‘memcache_host’,
11211);

内网访问

返回值:
假使成功则赶回 TRUE,战败则赶回 FALSE。

?>

极致把两台服务器之间的走访是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都是有两块网卡,一块指向网络,一块指向内网,那么就让Web服务器通过内网的网卡来拜会Memcache服务器,大家Memcache的服务器上运营的时候就监听内网的IP地址和端口,内网间的走访能够行得通阻止其余违规的访问。 
复制代码 代码如下:# memcached -d -m 1024 -u root -l 192.168.0.200 -p
11211 -c 1024 -P /tmp/memcached.pid 
Memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024MB内部存款和储蓄器,并且同意最大102陆个并发连接。

例子:

Memcache::getStats

设置防火墙 
防火墙是归纳有效的方法,若是却是两台服务器都以挂在网的,并且供给经过外网IP来访问Memcache的话,那么能够设想动用防火墙大概代理程序来过滤违规访问。一般大家在Linux下能够使用iptables可能FreeBSD下的ipfw来钦定一些规则幸免有个别不法的拜访,比如大家可以安装只允许我们的Web服务器来走访大家Memcache服务器,同时阻止其余的走访。 
复制代码 代码如下:# iptables -F 
# iptables -P INPUT DROP 
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT 
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11211 -j ACCEPT 
地点的iptables规则正是只允许192.168.0.2那台Web服务器对Memcache服务器的拜会,可以使得的遏止一些不法访问,相应的也得以扩充部分别样的条条框框来增强安全性,这么些能够依照自身的供给来做。

<?php
$memcache_obj = new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->setCompressThreshold(20000, 0.2);
$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_compress_threshold($memcache_obj, 20000, 0.2);

?> 

 代码如下:

 

array Memcache::getStats ([ string $type [, int $slabid [, int $limit
]]] )

Memcache::setServerParams

说明:
归来服务器的一部分运行总计消息。相同的函数是memcache_get_stats()

复制代码 代码如下:

参数:
$type表示须要再次来到的种类:reset, malloc, maps, cachedump, slabs, items,
sizes;
$slabid第3个参数设置为”cachedump”时使用的。
$limit第二个参数设置为”cachedump”时行使的。

bool Memcache::setServerParams ( string $host [, int $port [, int
$timeout [, int$retry_interval [, bool $status [, callback
$failure_callback ]]]]] )

Memcache::getVersion

说明:
在运维时修改服务器的参数。相同函数是memcache_set_server_params()。

 代码如下:

参数:
$host服务器的地点
$port服务器端口
$timeout连接的持续时间
$retry_interval连接重试的间隔时间,暗许为15,设置为-1意味着不实行重试
$status控战胜务器的在线状态
$failure_callback允许设置3个回掉函数来处理错误消息。

string Memcache::getVersion ( void )

返回值:
假若成功则赶回 TRUE,失利则赶回 FALSE。

说明:
回去运营的Memcache的版本消息。相同函数memcache_get_version()

例子:

返回值:
中标再次回到服务器的版本音信,战败的时候回来false。

<?php

function _callback_memcache_failure($host, $port) {
print "memcache '$host:$port' failed";
}

$memcache = new Memcache;

// 离线模式增加一个服务器
$memcache->addServer('memcache_host', 11211, false, 1, 1, -1, false);

// 把服务器设成在线
$memcache->setServerParams('memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_server_params($memcache_obj, 'memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');

?>

例子:

 

 代码如下:

6、综合使用实例

<?php
$memcache = new Memcache;
$memcache->connect(‘memcache_host’, 11211);
echo $memcache->getVersion();

<?php
//连接
$mem = new Memcache;
$mem->connect("db.nowamagic.net", 12000);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>



如果正常的话,浏览器将输出:

Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd )
Get key1 value:
Get key2 value:

$memcache = memcache_connect(‘memcache_host’, 11211);
echo memcache_get_version($memcache);
?>

 

Memcache::increment

⑦ 、实例程序代码分析
早先化叁个Memcache的对象:$mem = new Memcache;
连接受大家的Memcache服务器端,第一个参数是服务器的IP地址,也足以是主机名,第二个参数是Memcache的绽开的端口:$mem->connect(“192.168.0.200”,
12000);
封存多少个数据到Memcache服务器上,第三个参数是数量的key,用来恒定一个数量,第二个参数是亟需保留的数量内容,那里是贰个字符串,第多少个参数是一个标志,一般设置为0大概MEMCACHE_COMPRESSED就行了,第多个参数是数量的有效期,正是说数据在那些日子内是行得通的,就算过去那么些小时,那么会被Memcache服务器端清除掉这些数量,单位是秒,如若设置为0,则是世代有效,大家那里安装了60,便是一分钟有效时间:$mem->set(‘key1‘,
‘This is first value’, 0, 60);
从Memcache服务器端获取一条数据,它唯有三个参数,正是急需获取数据的key,大家那边是上一步设置的key1,以后赢得这么些数量后输出输出:

 代码如下:

复制代码 代码如下:

int Memcache::increment ( string $key [, int $value ] )

$val = $mem->get(‘key1′);
echo “Get key1 value: ” . $val;

对封存的某些key中的值实行加法操作
用法参考Memcache::decrement

昨天是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是同样的,可是第一个参数key1是必须是要替换数据内容的key,最终输出了:

Memcache::pconnect

复制代码 代码如下:

 代码如下:

$mem->replace(‘key1’, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val;

bool Memcache::pconnect ( string $host [, int $port [, int $timeout
]] )

一致的,Memcache也是能够保存数组的,上面是在Memcache上边保存了三个数组,然后拿走回来并出口:

说明:
创建多少个Memcache的有始有终连接对象
用法与Memcache::connect()相似,分裂点地点是Memcache::pconnect是树立的有始有终连接。那么些一连在本子执行完或许Memcache::close()函数运行也不会被关闭。与它一律的函数是memcache_pconnect()

复制代码 代码如下:

参数:
$host:指向memcached正在听取的链接的主机,那几个参数会有另一种非常的三番五次方式unix:///path/to/memcached.sock,即用unix的域名sockets,那种意况下,端口必须设置为0
$port:指向memcached正在听取的链接的端口,用unix的域名sockets的图景下,端口必须安装为0
$timeout:用于连接守护进度的秒数,当你改变暗中同意的1秒的值的时候,你要求考虑一下,就算您的连日太慢的话,你大概会失掉缓存的优势。

$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2’, $arr, 0, 60);
$val2 = $mem->get(‘key2’);
print_r($val2);

返回值:
假如成功则赶回 TRUE,退步则赶回 FALSE

近来剔除贰个数码,使用delte接口,参数正是一个key,然后就能够把Memcache服务器那些key的数目删除,最终输出的时候从不结果:

 代码如下:

复制代码 代码如下:

<?php

$mem->delete(‘key1’);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val . “<br />”;

$memcache_obj = memcache_pconnect(‘memcache_host’, 11211);

最终大家把富有的保留在Memcache服务器上的多少都免去,会意识数目都未曾了,最终输出key2的数量为空,最终关闭连接:

$memcache_obj = new Memcache;
$memcache_obj->pconnect(‘memcache_host’, 11211);

复制代码 代码如下:

?>

$mem->flush();
$val2 = $mem->get(‘key2’);
echo “Get key2 value: “;
print_r($val2);
echo “<br />”;

Memcache::replace

⑧ 、哪一天利用Memcache和Memcache的使用环境
应用Memcache的网站一般流量都是相比较大的,为了消除数据库的下压力,让Memcache作为多个缓存区域,把一部分音信保存在内部存款和储蓄器中,在前者能够高效的展开存取。那么一般的难点就是集聚在怎么着分担数据库压力和进行分布式,毕竟单台Memcache的内部存款和储蓄器容积的蝇头的。小编那里大概建议自身的个人观点,未经实践,权当参考。

 代码如下:

分布式应用
Memcache本来辅助分布式,大家客户端稍加改造,更好的支撑。大家的key能够适当实行有规律的卷入,比如以user为主的网站的话,各类用户都有User
ID,那么能够遵照稳定的ID来开始展览领取和存取,比如1始发的用户保存在首先台Memcache服务器上,以2起首的用户的数据保存在其次胎Mecache服务器上,存取数据都先根据User
ID来进展相应的转换和存取。
而是这些有瑕疵,正是亟需对User
ID举办判定,借使事情分歧等,或许其余类别的行使,恐怕不是那么方便,那么能够遵照本人的其实工作来进展考虑,可能去想更适合的办法。

bool Memcache::replace ( string $key , mixed $var [, int $flag [, int
$expire ]] )

调整和减弱数据库压力
那些好不简单比较主要的,全部的多寡大概都是保存在数据库个中的,每便频仍的存取数据库,导致数据库品质极具降低,不能够同时服务越来越多的用户,比如MySQL,尤其频仍的锁表,那么让Memcache来平均分摊数据库的压力吧。大家须要一种转移比较小,并且能够不会大规模转移前端的章程来开始展览变更方今的框架结构。
自个儿考虑的一种简易方法:
后端的数据库操作模块,把持有的Select操作提取出来(update/delete/insert不管),然后把相应的SQL进行对应的hash算法总结得出八个hash数据key(比如MD5也许SHA),然后把那一个key去Memcache中检索数据,假诺那一个数额不存在,表明还没写入到缓存中,那么从数据库把数据提取出来,三个是数组类格式,然后把多少在set到Memcache中,key便是其一SQL的hash值,然后相应的设置三个失效时间,比如一个钟头,那么二个钟头中的数据都以从缓存中提取的,有效压缩数据库的压力。缺点是数额不实时,当数码做了修改以往,没办法实时到前端展现,并且还有或然对内部存款和储蓄器占用相比大,终归每一次select出来的多寡数量大概相比巨大,这几个是索要考虑的要素。

说明:
对2个已部分key进行覆写操作。相同函数是memcache_replace()

九、Memcache的安全

参数:
$key :将要存款和储蓄的键值。
$var
:存款和储蓄的值,字符型和整型会按原值保存,其余门类自动系列化现在保存。
$flag:是否用MEMCACHE_COMPRESSED来减少存款和储蓄的值,true表示压缩,false表示不减价扣。
$expire:存款和储蓄值的逾期时间,如果为0象征不会晚点,你能够用unix时间戳可能描述来代表从现行反革命上马的日子,然则你在运用秒数表示的时候,不要超过259两千秒
(表示30天)。

我们地方的Memcache服务器端都以直接通过客户端连接后直接操作,没有其余的认证进度,那样只要服务器是间接暴光在互连网上的话是相比危急,轻则数据外泄被其余无关人士查看,重则服务器被入侵,因为Mecache是以root权限运作的,况且里面只怕存在部分大家不解的bug只怕是缓冲区溢出的气象,这一个都是我们不解的,所以危险性是能够预知的。为了安全起见,作者做两点提议,可以微微的幸免黑客的侵犯也许数额的败露。

返回值:
设若成功则赶回 TRUE,失利则赶回
FALSE。要是$key值已经存在,则会回到FALSE。

内网访问

代码如下:

极端把两台服务器之间的访问是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都是有两块网卡,一块指向互连网,一块指向内网,那么就让Web服务器通过内网的网卡来做客Memcache服务器,大家Memcache的服务器上运转的时候就监听内网的IP地址和端口,内网间的拜访能够有效阻止别的违法的造访。

<?php

复制代码 代码如下:

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
memcache_replace($memcache_obj, “test_key”, “some variable”, false,
30);
$memcache_obj->replace(“test_key”, “some variable”, false, 30);

# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P
/tmp/memcached.pid

?>

Memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024MB内部存款和储蓄器,并且同意最大10二十五个冒出连接。

Memcache::set

设置防火墙 防火墙是简单实用的不二法门,尽管却是两台服务器都以挂在网的,并且须要经过外网IP来访问Memcache的话,那么能够设想动用防火墙或许代理程序来过滤不合规访问。一般我们在Linux下能够运用iptables或然FreeBSD下的ipfw来内定一些条条框框防止有些不法的走访,比如大家可以安装只允许我们的Web服务器来拜访大家Memcache服务器,同时阻止其余的拜会。

 代码如下:

复制代码 代码如下:

bool Memcache::set ( string $key , mixed $var [, int $flag [, int
$expire ]] )

# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11211 -j ACCEPT

说明:
添加一个值,假如已经存在,则覆写。相同函数是memcache_set()

上面包车型客车iptables规则就是只同意192.168.0.2那台Web服务器对Memcache服务器的访问,能够有效的拦截一些野鸡访问,相应的也足以追加一些任何的规则来拉长安全性,这几个能够根据自身的急需来做。

参数:
$key :将要存款和储蓄的键值。
$var
:存款和储蓄的值,字符型和整型会按原值保存,其余品种自动类别化以往保存。
$flag:是否用MEMCACHE_COMPRESSED来压缩存款和储蓄的值,true表示压缩,false表示不减少。
$expire:存款和储蓄值的过期时间,若是为0意味着不会晚点,你能够用unix时间戳只怕描述来表示从后天启幕的大运,可是你在选取秒数表示的时候,不要跨越2593000秒
(表示30天)。

返回值:
比方成功则赶回 TRUE,战败则赶回 FALSE。

例子:

 代码如下:

$memcache_obj = new Memcache;
$memcache_obj->connect(‘memcache_host’, 11211);
$memcache_obj->set(‘var_key’, ‘some really big variable’,
MEMCACHE_COMPRESSED, 50);
echo $memcache_obj->get(‘var_key’);

Memcache::setCompressThreshold

 代码如下:

bool Memcache::setCompressThreshold ( int $threshold [, float
$min_savings ] )

说明:
对抢先某一大小的数量进行压缩。相同的函数是memcache_set_compress_threshold()

参数:
setCompressThreshold方法有多个参数,第二个参数表示处理多少大小的临界点,第二个参数表示压缩的比重,暗中认可为0.2。

返回值:
倘使成功则赶回 TRUE,战败则赶回 FALSE。

例子:

 代码如下:

<?php

$memcache_obj = new Memcache;
$memcache_obj->addServer(‘memcache_host’, 11211);
$memcache_obj->setCompressThreshold(20000, 0.2);

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
memcache_set_compress_threshold($memcache_obj, 20000, 0.2);

?>

Memcache::setServerParams

 代码如下:

bool Memcache::setServerParams ( string $host [, int $port [, int
$timeout [, int$retry_interval [, bool $status [, callback
$failure_callback ]]]]] )

说明:
在运作时修改服务器的参数。相同函数是memcache_set_server_params()。

参数:
$host服务器的地点
$port服务器端口
$timeout连接的持续时间
$retry_interval连接重试的间隔时间,暗中同意为15,设置为-1意味不进行重试
$status控制伏务器的在线状态
$failure_callback允许设置多个回掉函数来处理错误消息。

返回值:
一旦成功则赶回 TRUE,退步则赶回 FALSE。

例子:

 代码如下:

<?php

function _callback_memcache_failure($host, $port) {
print “memcache ‘$host:$port’ failed”;
}

$memcache = new Memcache;

// 离线方式扩充2个服务器
$memcache->addServer(‘memcache_host’, 11211, false, 1, 1, -1,
false);

// 把服务器设成在线
$memcache->setServerParams(‘memcache_host’, 11211, 1, 15, true,
‘_callback_memcache_failure’);

$memcache_obj = memcache_connect(‘memcache_host’, 11211);
memcache_set_server_params($memcache_obj, ‘memcache_host’, 11211,
1, 15, true, ‘_callback_memcache_failure’);

?>

六 、综合选取实例

代码如下:

<?php
//连接
$mem = new Memcache;
$mem->connect(“db.nowamagic.net”, 12000);
//保存数据
$mem->set(‘key1’, ‘This is first value’, 0, 60);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val .”<br />”;
//替换数据
$mem->replace(‘key1’, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val . “<br />”;
//保存数组
$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2’, $arr, 0, 60);
$val2 = $mem->get(‘key2’);
echo “Get key2 value: “;
print_r($val2);
echo “<br />”;
//删除数据
$mem->delete(‘key1’);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val . “<br />”;
//清除全数数据
$mem->flush();
$val2 = $mem->get(‘key2’);
echo “Get key2 value: “;
print_r($val2);
echo “<br />”;
//关闭连接
$mem->close();
?>

若果寻常的话,浏览器将出口:

代码如下:

Get key1 value: This is first value
Get key1 value: This is replace value
Get key2 value: Array ( [0] => aaa [1] => bbb [2] => ccc
[3] => ddd )
Get key1 value:
Get key2 value:

七 、实例程序代码分析
初阶化多个Memcache的对象:$mem = new Memcache;
连接受我们的Memcache服务器端,第一个参数是服务器的IP地址,也足以是主机名,第二个参数是Memcache的怒放的端口:$mem->connect(“192.168.0.200”,
1两千);
保留八个数据到Memcache服务器上,第三个参数是数据的key,用来恒定三个数目,第一个参数是要求保留的多寡内容,这里是三个字符串,第一个参数是二个符号,一般设置为0也许MEMCACHE_COMPRESSED就行了,第八个参数是数据的有效期,就是说数据在这几个小时内是一蹴而就的,固然过去那个时间,那么会被Memcache服务器端清除掉那一个数目,单位是秒,假若设置为0,则是恒久有效,大家那里安装了60,正是一分钟有效时间:$mem->set(‘key1‘,
‘This is first value’, 0, 60);
从Memcache服务器端获取一条数据,它唯有二个参数,正是索要获取数据的key,大家那边是上一步设置的key1,现在取得那一个数量后输出输出:

代码如下:

$val = $mem->get(‘key1′);
echo “Get key1 value: ” . $val;

到现在是应用replace方法来替换掉上面key1的值,replace方法的参数跟set是相同的,可是第③个参数key1是必须是要替换数据内容的key,最终输出了:

代码如下:

$mem->replace(‘key1’, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val;

平等的,Memcache也是足以保存数组的,上面是在Memcache上边保存了三个数组,然后拿走回来并出口:

 代码如下:

$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2’, $arr, 0, 60);
$val2 = $mem->get(‘key2’);
print_r($val2);

当今剔除二个数码,使用delte接口,参数便是一个key,然后就能够把Memcache服务器这么些key的数据删除,最终输出的时候从不结果:

代码如下:

$mem->delete(‘key1’);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val . “<br />”;

说到底大家把装有的保留在Memcache服务器上的数据都消除,会发觉数目都并未了,最终输出key2的数目为空,最后关闭连接:

代码如下:

$mem->flush();
$val2 = $mem->get(‘key2’);
echo “Get key2 value: “;
print_r($val2);
echo “<br />”;

怎么时候利用Memcache和Memcache的利用环境
动用Memcache的网站一般流量都以相比较大的,为了化解数据库的下压力,让Memcache作为三个缓存区域,把某个音讯保存在内存中,在前端能够异常的快的展开存取。那么一般的症结正是集中在怎么分担数据库压力和举行分布式,究竟单台Memcache的内部存款和储蓄器容积的个其余。作者那边差不离提议本人的个体意见,未经实践,权当参考。

分布式应用
Memcache本来补助分布式,大家客户端稍加改造,更好的帮忙。大家的key能够适合拓展有规律的卷入,比如以user为主的网站的话,每一个用户都有User
ID,那么能够依照定点的ID来进行领取和存取,比如1起始的用户保存在首先台Memcache服务器上,以2发端的用户的数据保存在第壹胎Mecache服务器上,存取数据都先遵照User
ID来拓展对应的转移和存取。
而是那么些有缺点,正是索要对User
ID举行判断,假若事情不均等,或许别的类其余使用,大概不是那么适合,那么能够依照本身的实际上业务来拓展考虑,大概去想更合适的法门。

减弱数据库压力
以此好不简单相比关键的,全数的数据大致都以保存在数据库当中的,每便频仍的存取数据库,导致数据库品质极具下落,不能够同时服务越来越多的用户,比如MySQL,尤其频仍的锁表,那么让Memcache来平摊数据库的压力啊。大家需求一种改变比较小,并且能够不会普遍转移前端的艺术来进展转移如今的架构。
本人着想的一种简单方法:
后端的数据库操作模块,把装有的Select操作提取出来(update/delete/insert不管),然后把相应的SQL进行对应的hash算法总结得出1个hash数据key(比如MD5也许SHA),然后把这一个key去Memcache中搜寻数据,尽管那个数额不存在,表明还没写入到缓存中,那么从数据库把数量提取出来,一个是数组类格式,然后把多少在set到Memcache中,key正是以此SQL的hash值,然后相应的设置贰个失效时间,比如二个钟头,那么二个刻钟中的数据都以从缓存中提取的,有效削减数据库的压力。缺点是多少不实时,当数码做了修改未来,不能够实时到前者展现,并且还有或许对内部存款和储蓄器占用相比较大,终究每一回select出来的数量数量大概相比较巨大,那个是亟需考虑的要素。

Memcache的安全

咱俩地点的Memcache服务器端都以直接通过客户端连接后一直操作,没有任何的辨证进度,那样一旦服务器是直接暴露在网络上的话是比较危急,轻则数据败露被别的非亲非故职员翻开,重则服务器被侵袭,因为Mecache是以root权限运转的,况且里面大概存在部分我们不解的bug或许是缓冲区溢出的状态,这么些都以我们不解的,所以危险性是足以预知的。为了安全起见,小编做两点建议,能够微微的防范黑客的入侵只怕数额的透漏。

内网访问

最为把两台服务器之间的造访是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都以有两块网卡,一块指向互连网,一块指向内网,那么就让Web服务器通过内网的网卡来拜访Memcache服务器,我们Memcache的服务器上运营的时候就监听内网的IP地址和端口,内网间的造访能够有效阻止其余违法的走访。

 代码如下:

# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P
/tmp/memcached.pid

Memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024MB内部存款和储蓄器,并且同意最大10贰12个冒出连接。

设置防火墙 防火墙是粗略实用的方法,假若却是两台服务器都以挂在网的,并且需求通过外网IP来访问Memcache的话,那么能够考虑选择防火墙可能代理程序来过滤违法访问。一般大家在Linux下能够选取iptables或许FreeBSD下的ipfw来钦点一些条条框框幸免部分不合规的拜访,比如大家得以设置只同意我们的Web服务器来走访我们Memcache服务器,同时阻止别的的走访。

代码如下:

# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11211 -j ACCEPT

上面包车型大巴iptables规则便是只同意192.168.0.2那台Web服务器对Memcache服务器的拜会,能够行得通的阻止一些违规访问,相应的也能够追加一些其余的平整来增强安全性,那个能够遵照自个儿的内需来做。 

 

 

实战

//memcached配置
/********************************************/
$mem_ip=’127.0.0.1′;
$mem_port=11211;
$mem_prefix=”;
/********************************************/

/********************************************/
//session
memcached配置,请配置到2个独自的memcache服务(分化IP或不一致端口号),
//多少个镜像站都不能够不设置同一,不然会导致session丢失
//别的任何程序都无法采用这么些服务,以免争辨。
/********************************************/
$session_mem_ip=’127.0.0.1′;
$session_mem_port=11212;

 

function Instance_Memcached()
{
static $mem=false;
if($mem==false && isset($GLOBALS[‘mem_ip’]) &&
isset($GLOBALS[‘mem_port’]) && extension_loaded(‘memcache’))
{
$mem=new Memcache;
$mem->pconnect($GLOBALS[‘mem_ip’],$GLOBALS[‘mem_port’]) or
die(‘Can not connect to memcache server!’);
}
return $mem;
}

 

网站地图xml地图