PHP如何使用memcached
一、对memcached简介memcached是一个高性能的分布式内存缓存服务器。一般使用的目的是通过缓存数据库查询结果,减少数据库的访问次数,从而提高速度和动态Web应用程序的可扩展性,可以适应任何多个连接,使用非阻塞的网络IO。因为它的工作机制是在内存中开辟一块空间,然后建立一个哈希表,memcached自我管理这些哈希表。
二,Memcached安装
第一步是下载缓存,和最新版本1.1.12,可直接从官方网站下载memcached-1.1.12.tar.gz.in此外,Memcached使用libevent,我下载了libevent-1.1a.tar.gz。
接下来是解压,编译,安装libevent-1.1a.tar.gz和memcached-1.1.12.tar.gz,分别:
#焦油计算libevent-1.1a.tar.gz CD。 /配置-前缀= / usr #使# # libevent-1.1a #安装# CD焦油计算memcached-1.1.12。焦油。广州# CD memcached-1.1.12。# #。 /配置-前缀= / usr #使#安装
安装完成后,应在memcached / usr /斌/缓存。
三。运行memcached进程
运行memcached进程是简单的,只是一个命令行,无需修改任何配置文件(没有配置文件可以修改为你):
/ usr /斌/缓存- D - M 128 L P 11211 U httpd 192.168.1.1
参数解释:
守护进程(daemon)的三维运行memcached;M组Memcached可以使用单位的内存大小为m;L设置监控的IP地址,如果这台机器,通常不能设置此参数;P设置监听端口,默认是11211,所以它可以不设置此参数;-你指定的用户,如果当前是根,需要使用此参数指定用户。
当然,还有其他的参数,可以使用memcached,人可以看到。
四、工作原理memcached
首先,将运行在一个或多个服务器守护进程模式,并接受客户端的连接操作,在任何时间。客户端可以是各种语言编写的,与目前已知的客户端API包括Perl、PHP、Python、Ruby / / / # java C C等。PHP在客户端建立与memcached服务连接后,下一步是访问对象,每个访问的对象都有一个唯一的标识符,通过访问操作的关键,保存缓存对象实际上是放置在内存中,而不是存储在缓存中的缓存文件,为什么能如此快速、高效的原因。注意,这些物体是不是持久的,在里面的数据将在服务停止了。
五、PHP如何作为一个memcached客户端
有两种方法可以让PHP作为Memcached客户端,调用缓存的服务对象的访问操作。
首先,PHP有一个扩展名为Memcache。当Linux编译,它需要将启用memcache { = dir }选项。窗下,对php_memcache.dll正面标注移出的使其可。
此外,有一种方法可以避免扩展和重新编译的麻烦,它是用PHP Memcached客户端直接。
本文选择第二种方式,虽然效率会比扩展库稍差,但问题不大。
六、PHP缓存技术的应用实例
首先,下载memcached-client.php。下载后memcached-client.php,你可以用memcached服务通过类memcached这个文件。事实上,代码调用非常简单,所采用的方法主要是增加(),得到(),(),删除(替换)。这些方法描述如下:
复制代码代码如下所示:
添加($,$,$ = 0)
写对象缓存技术,关键是美元的唯一标识符的对象,为val对象数据写入,$ EXP到期时间,单位是秒,默认是没有时间。
获取($密钥)
从缓存中获得对象的数据,这是由对象的唯一标识符密钥获得美元。
复制代码代码如下所示:
替换($键,$,$ = 0)
使用$值代替对象内容在memcached标识符美元关键。参数与添加()方法相同。只有当$对象存在时,它才会工作。
复制代码代码如下所示:
删除($键,$时间= 0)
删除关键在美元memcached标识符的对象,美元和时间作为一个可选的参数,说明多长时间需要等待删除。
以下是该对象的数据与identifier'mykey'is访问一个简单的测试代码。
< PHP
包含 / /缓存的类文件
require_once('memcached-client。php);
选项
$选项=数组(
'服务器' =阵列('192.168.1.1:11211 '), / / memcached服务地址,端口,可以使用多个数组元素代表多个memcached服务
调试= true,调试是打开的
compress_threshold= > 10240, / /压缩过的数据的字节数
持续性= >假 / /是否使用持久连接
);
/ /创建一个缓存对象实例
MC =新memcached美元(美元期权);
使用唯一标识符设置脚本
美元关键= 'mykey;
/ /写入缓存对象
MC ->添加美元(美元的关键,随机字符串);
$ = $;
回声n。str_pad($ MC ->添加(60)、N,'_ ');
var_dump(美元值);
已写入对象数据以替换值。
MC ->取代美元(美元关键,阵列(= > 'haha ','array= > 'xxx '));
$ = $;
回声n。str_pad($ MC ->替换(60)、N,'_ ');
var_dump(美元值);
/ /删除对象缓存
$ >删除($键);
$ = $;
回声n。str_pad($ MC ->删除(60)、N,'_ ');
var_dump(美元值);
>
很简单吗在实际应用中,我们通常存储组数据库查询缓存的结果,并直接从缓存中而不是数据库查询操作得到它,可以很大程度上减少数据库负担。SQL语句的MD5值后()通常作为唯一标识符的关键。其次是使用memcached缓存设置一个数据库查询结果的一个例子(代码片段如下上面的例子代码)。
< PHP
美元'select *从用户的SQL语句;
美元关键= MD5($ SQL); / /缓存对象标识符
如果(!($)
无需访问数据缓存 / /缓存,用于在数据库查询获得的记录。
回声n。str_pad(读取数据从MySQL。60、N '_)。;
美元mysql_connect conn =('localhost测试,测试的);
mysql_select_db(测试);
结果= mysql_query美元($ SQL);
而($行= mysql_fetch_object($结果))
$数据= $行;
/ /数据库访问保存在缓存中的数据,当用于下次访问。
添加$(键,数据);
{人}
回声n。str_pad(读取数据从缓存。,60,N '_)。;
}
var_dump($数据);
>
你可以看到,使用缓存后,可以减少数据库连接,查询操作,数据库的负载下,和脚本的运行速度也得到了提高。
之前我写了一篇题为PHP多服务器的会话数据共享的文章,会话是一个数据库储存使用,获得大量的并发服务器负载的时间将是巨大的,往往超出连接mysql的最大数目,使用缓存技术,我们可以很好的解决这个问题,工作原理如下:
用户访问一个网页,是否有查看缓存当前用户会话数据,使用session_id()作为一种独特的标识符;如果数据存在,则直接返回,如果不存在,那么数据库连接、访问会话数据,而这个数据保存到memcached,下次使用PHP运行电流(结束;或使用session_write_close()),称my_sess::写()方法,将数据写入到数据库中,这样每次仍然会有一个数据库的操作,这种方法需要使用一个全局变量优化。用户会话数据,进入页面,然后在写()与会话数据比较写入相同的数据的方法,不同的数据库连接,一T在memcached的同时将写入数据库,删除相应的对象,如果是相同的,说会话数据没有变化,所以,你可以不做任何操作,直接返回给用户的方式;会话过期时间解决你还记得添加()方法memcached有过期的时间参数$口吗将此参数值设置为小于会话最大存活时间,并且不要忘记将会话时间扩展到总是在线的用户。这可以在写()方法中解决。通过更新时间和满足需求,我们可以更新数据库数据。
以上内容是小编介绍如何使用PHP缓存技术,希望对你有帮助!