未分类

【www.2979.com】先是是下载 memcached 了

16 1月 , 2020  

肖理达 (KrazyNio AT hotmail.com卡塔尔国, 2007.04. 06, 转发请注解出处

一、memcached 简介

在重重地方,我们都会听到 memcached
那个名字,但众多校友只是听过,并未用过或实际驾驭过,只略知大器晚成二它是一个很正确的东东。这里大约介绍一下,memcached
是全速、急速的遍及式内部存款和储蓄器对象缓存系统,首要用来加快 WEB 动态应用程序。

二、memcached 安装

首先是下载 memcached 了,近日新型版本是 1.1.12,直接从官方网站就能够下载到
memcached-1.1.12.tar.gz。除却,memcached 用到了 libevent,小编下载的是
libevent-1.1a.tar.gz。

接下去是各自将 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz
解开包、编译、安装:复制代码 代码如下:#
tar -xzf libevent-1.1a.tar.gz # cd libevent-1.1a # ./configure
–prefix=/usr # make # make install # cd .. # tar -xzf
memcached-1.1.12.tar.gz # cd memcached-1.1.12 # ./configure
–prefix=/usr # make # make install 安装到位之后,memcached 应该在
/usr/bin/memcached。 三、运行 memcached 守护程序 运转 memcached
守护程序超轻松,只需三个命令行就能够,没有须要改进任何配置文件:
/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd参数解释:
-d 以守护程序方法运维 memcached; -m 设置 memcached
能够行使的内存大小,单位为 M; -l 设置监听的 IP
地址,假设是本机的话,平日能够不设置此参数; -p 设置监听的端口,默以为11211,所以也得以不安装此参数; -u 钦命客户,如若当前为 root
的话,须求使用此参数内定顾客。 当然,还大概有任何参数能够用,man memcached
一下就足以看见了。 四、memcached 的做事原理 首先 memcached
是以守护程序方法运转于一个或多少个服务器中,随即选用客商端的接连操作,顾客端能够由种种语言编写,最近已知的顾客端
API 包涵 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客商端在与
memcached
服务建构连接之后,接下去的事务正是存取对象了,各个被存取的对象都有多个唯风流倜傥的标志符
key,存取操作均经过这一个 key 进行,保存到 memcached
中的对象实际是停放内部存款和储蓄器中的,并非保留在 cache 文件中的,那也是怎么
memcached
能够这么快捷便捷的原由。注意,那个指标并不是自始至终的,服务结束今后,里边的数额就能够废弃。

三、PHP 怎么样作为 memcached 客商端

有二种方法能够使 PHP 作为 memcached 客户端,调用 memcached
的劳动实行对象存取操作。

首先种,PHP 有一个名字为 memcache 的扩大,Linux 下编写翻译时须要带上
–enable-memcache[=DIR] 选项,Window 下则在 php.ini 中去掉
php_memcache.dll 后面的注释符,使其可用。

除开,还会有风度翩翩种方法,能够隐敝扩张、重新编写翻译所带来的分神,那便是直接行使
php-memcached-client。

正文选用第三种艺术,尽管效能会比扩充库稍差了一些,但难题相当的小。

四、PHP memcached 应用示范

率先 下载 memcached-client.php,在下载了 memcached-client.php
之后,就足以由此这几个文件中的类“memcached”对 memcached
服务举办操作了。其实代码调用特别轻便,主要会用到的方式有 add 和
delete(卡塔尔(قطر‎,方法求证如下:

add往 memcached 中写入对象,$key 是指标的头一无二标志符,$val
是写入的靶子数据,$exp 为过期光阴,单位为秒,默以为不限制时间间;

get从 memcached 中赢得对象数据,通过对象的必须要经过的路标记符 $key 获取;

replace行使 $value 替换 memcached 中标记符为 $key 的对象内容,参数与
add(卡塔尔 方法意气风发致,唯有 $key 对象存在之处下才会起作用;

delete剔除 memcached 中标志符为 $key 的对象,$time
为可选参数,表示删除以前须要等待多久。

上边是豆蔻梢头段轻松的测量试验代码,代码中对标记符为 ‘mykey’
的对象数据开展存取操作:复制代码
代码如下: array, //memcached 服务的地点、端口,可用四个数组成分表示多少个memcached 服务 ‘debug’ => true, //是还是不是展开 debug
‘compress_threshold’ => 10240, //当先多少字节的数码时开展压缩
‘persistant’ => false //是不是利用悠久连接 State of Qatar; // 创造 memcached
对象实例 $mc = new memcached; // 设置此脚本使用的独步天下标记符 $key =
‘mykey’; // 往 memcached 中写入对象 $mc->add($key, ‘some random
strings’卡塔尔(قطر‎; $val = $mc->get; echo “n”.str_pad ‘, 60, ‘_’).”n”;
var_dump; // 替换已写入的靶子数据值 $mc->replace($key,
array(‘some’=>’haha’, ‘array’=>’xxx’卡塔尔卡塔尔(قطر‎; $val = $mc->get; echo
“n”.str_pad ‘, 60, ‘_’).”n”; var_dump; // 删除 memcached 中的对象
$mc->delete; $val = $mc->get; echo “n”.str_pad ‘, 60, ‘_’).”n”;
var_dump; ?>
是不是相当的轻便,在骨子里运用中,平时会把数据库查询的结果集保存到 memcached
中,后一次作客时一贯从 memcached
中得到,而不再做数据库查询操作,那样能够在十分的大程度上缓解数据库的担当。平常会将
SQL 语句 md5(卡塔尔(قطر‎ 之后的值作为唯生龙活虎标志符 key。上边是二个使用 memcached
来缓存数据库查询结果集的现身说法: 复制代码
代码如下: get { // 在 memcached
中未取获得缓存数据,则接收数据库查询拿到记录集。 echo “n”.str_【www.2979.com】先是是下载 memcached 了。pad(‘Read
datas from MySQL.’, 60, ‘_’).”n”; $conn = mysql_connect(‘localhost’,
‘test’, ‘test’); mysql_select_db; $result = mysql_query; while ($row
= mysql_fetch_object $datas[] = $row; //
将数据库中拿走到的结果集数据保存到 memcached 中,以供后一次探问时行使。
$mc->add; } else { echo “n”.str_pad(‘Read datas from memcached.’,
60, ‘_’).”n”; } var_dump; ?>

能够看看,使用 memcached
之后,能够减小数据库连接、查询操作,数据库负载下来了,脚本的周转速度也增加了。

事情发生前作者曾经写过风流浪漫篇名称为《PHP 达成多服务器分享 SESSION 数据》文章,文中的
SESSION
是应用数据库保存的,在产出国访问问量大的时候,服务器的负载会一点都不小,平常会超越MySQL 最奥斯汀接数,利用
memcached,大家得以很好地消除这一个难题,工作规律如下:

客户访谈网页时,查看 memcached 中是还是不是有眼下客商的 SESSION 数据,使用
session_id(卡塔尔国作为唯风华正茂标记符;假如数额存在,则一向回到,借使荒诞不经,再张开数据库连接,获取
SESSION 数据,并将此数量保存到 memcached 中,供下一次使用; 当前的 PHP
运营甘休(或采纳了 session_write_close时,会调用 My_Sess::write()方法,将数据写入数据库,那样的话,每趟依旧会有数据库操作,对于那一个法子,也急需实行优化。使用三个全局变量,记录客商步入页面时的
SESSION 数据,然后在 write(State of Qatar 方法内比较此数据与想要写入的 SESSION
数据是还是不是相像,不一致才实行数据库连接、写入数据库,同一时候将 memcached
中对应的靶子删除,假若黄金时代致的话,则意味 SESSION
数据未改动,那么就可以不做其它操作,直接回到了; 那么顾客 SESSION
过期时间怎么化解吧?记得 memcached 的 add(卡塔尔(قطر‎ 方法有个过期时间参数 $exp
吗?把那几个参数值设置成小于 SESSION
最大存活时间就可以。此外别忘了给那叁个平素在线的客户一而再 SESSION
时间长度,这么些能够在 write(State of Qatar方法中消除,通过判别时间,相符条件则更新数据库数据。

五、相关能源

memcached 官方网站 PHP memcached client 下载 memcached-client.php


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图