




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Memcached 技术 介绍:memcached是一种缓存技术,他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的,memcached技术的主要目的提速,在memachec中维护了一张大的 hashtable表,该表是在内存,表的结构是key value字串(字串,数值,数组,对象,布尔,二进制数据,null)安装并使用 memcached安装步骤(1)下载memcached软件(2)安装进入cmd,切换到 memcached.exe文件所在目录memcached.exe -d install(3)启动 memcached第一种,可以到服务点击启动第二种,命令行memcached
2、.exe -m 200MB -d start 【以 deamon 方式启动 默认 64M 】如果你在启动时,win7启动不成功,则可以使用如下方法memcached.exe -p 端口号启动方法不要关闭控制台.端口号的范围:0-65535 ,因为端口号是用两个字节来表示有名端口 : 0-1024 已经用程序使用,apache 80 , mysql 3306 , ftp 21 , ssh 22oracle: 1521, stmp: 25使用netstat -an如果看到11211端口在监听,说明启动 oknetstat wnb是哪个程序监听,这个指令还可以看到有哪些用户连接到我们的服务器如果没有
3、安装好,原因可能1 .如果你是win7, win7对安全性高,所有,必须以 adminstartor身份来安装. 你切换成adminstrator ,去安装,在启动2 .你的memcached.exe目录有中文,或特殊字符,保证目录没有中文和特殊字符(4)准备研究如果对 memcached进彳f curd操彳.看看telnet如何操作 (curd)1 .登录到telnet连接到memcached服务telnet 11211如果你们不能使用telnet是因为系统不存在telnet.exe ,就可以到其它机 器上拷贝telnet.exe 放在 c:windowssystem32
4、即可2 .增加基本语法是:add key名0存放时间(秒)数据大小(字符)举例:add key1 0 30 53 .如何获取基本语法是:get key 值get key14 .修改set key名0存放时间 数据大小.举例:set keyl 0 40 5?如果keyl不存在,则相当于增加新,如果存在,则相当有替换 replace key名 存放时间 数据大小replace keyl 0 40 5?如果keyl不存在,则失败,这个指令要求key必须存在5 .删除基本语法是delete key 名比如append key 0 60 15prepend key 0 60 15delete keyl
5、append Append data to existing key prepend Prepend data to existing keyflush_all可以统一把数据清空tatsSTAT pid 11904STAT upt ine 1142STfiT time 1357617633STAT vet's ion 1 _S _6STfiT pointer_si2e 32STAT c(Jirr_items 10STfiT total_iteui£ 40STAT bytes 6108TAT curr-Connections 16STAT total_connections 5
6、9STfiT connection_structures 23STAT cnd_jfet 75STfiT cmd_set 74STfiT aet_hits 38STAT get_nisses 37STAT evictions 0STAT bytes_read 6282STAT bytes_written 21738STAT limit_nxbytes 67108864STAT threads 1fc:ND这里主要大家可以去计算出命中率cmd_hits/cmd_get .越高越好.如何使用php程序操作我们的 memcached服务curd.步骤,准备工作.(1)把 php_memcache.d
7、ll 文件拷贝 php 的 ext 下?不同版本的php所使用的 php_memcache.dll的版本不一样(2)修改php.ini文件,加载 php_memcache.dll (该文件就是封装了一堆函数);力口载 php_memcache.dll 文件extension=php_memcache.dll(3)重新启动apache(4)我们写程序来完成 curd操作.细节:在我们添加数据的时候,如果bool Memcache:add ( string $key , mixed $var , int $flag , int $expire )如果报expire设为0表示,永不过期.(只要mem
8、cache不重新启动,就永远在 mem中)exprie直接给的是秒数,则最大 30*3600*24如果你希望保持时间超过30 time()+天数*3600*24即可最后代码:mem1.php<?php创建一个mem对象实例$mem=new Memcache;if(!$mem->connect("",11211)die('连接失败!);增加/1.增加一个字串/* if($mem->set('key1',"beijing",MEMCACHE_COMPRESSED,60)echo 添加 ok'
9、*/2.添加数值/* if($mem->set('key1',100,MEMCACHE_COMPRESSED,60)echo 添加 ok'*/3.添加数组在添加数组是,根据需要.希望序列号放入 ,/serialize<=>unserialize , 如果根据需要,也可以 json_encode <=> json_decode $arr=array("bj",'tj');if($mem->set('key1',$arr,MEMCACHE_COMPRESSED,time()+31*360
10、0*24)echo '添加数组 ok99111'/4.添加对象/* class Dogpublic $name;public $age;public function _construct($name,$age)$this->name=$name;$this->age=$age;$dog1=new Dog('小狗',50);if($mem->set('key1',$dog1,MEMCACHE_COMPRESSED,60)echo '添加对象ok'*/5.添加null布尔值/* if($mem->set(
11、39;key1',false,MEMCACHE_COMPRESSED,60)echo '添加布尔ok'*/6.资源类型放入./* $con=mysql_connect("","root","root");if(!$con)die('连接数据库失败');var_dump($con);echo "<br/>"if($mem->set('key1',$con,MEMCACHE_COMPRESSED,60)echo '添加资
12、源ok'*/查询$val=$mem->get('key1');var_dump($val);修改可以使用replaceif($mem->replace("key11",'hello',MEMCACHE_COMPRESSED,60) echo 'replace ok'elseecho 'replace no ok'/删除echo "<br/>"if($mem->delete('key14')echo 'key14 删除';e
13、lseecho 'key14 不存在'mem2.php<?php这个文件去操作 memcached服务创建一个mem对象实例$mem=new Memcache;if(!$mem->connect("",11211)die('连接失败!');在另外文件中取出对象时,有个注意的地方,对应php5.2这个版本会提示错误/对php5.3这个版本会提示incomplete信息,解决方法是声明类定义即可class Dogpublic $name;public $age;public function _construct($
14、name,$age)$this->name=$name;$this->age=$age;$dog=$mem->get('key1');var_dump($dog);test.php 说明 serilize 和 json_encode 用法:/什么时彳使用 serilize什么时候使用json_encode ajax配合<?phpclass Dogpublic Jname:public $age:public function construct($ namet $age)$this->name=3naine:$this->age=$age:)
15、$dog2 = new Dog ('小美14。):我方建也这个对象保存fl A. ->serilizefile put_contents(cl:/myJogserialize($dog2):echo 'save ok!;$dog=unserialize(fieget_contentsfrd:/myJogir):echo "<br/>T':echo $dog->name;$arr=arrayf cityr = >dhbjcityd = >d,tjf,):filc_put_contents(1'd:/my2 Jog11
16、json_encode($arr):练习:请大家使用 php程序 memcache.dll完成对 memcahce增删改查 20min如何使用PHP源码来操作memcached服务如果管理员不让我们去加载memcache.dll文件,我们可以直接通过源码操作代码 mem3.php<?phprequire_once 'memcached-client.php'$mc = new memcached(array('servers' => array(':11211'), / 连接的 memcacheip 和端口'
17、debug' => false, 是否 debug'compress_threshold' => 10240, /* 最大压缩 */'persistant' => true); /* 是否是持久连接 */$mc->set('key1', array('some', 'array');/ $mc->replace('key', 'some random string');$val = $mc->get('key1');var_
18、dump($val);修改$mc->replace('key1',"北京");$val = $mc->get('key1');var_dump($val);删除$mc->delete('key1');$val = $mc->get('key1');echo "删除后"var_dump($val);Memcached机制的深入了解基于C后架构,协议简单 c/s架构,此时memcached为服务器端,我们可以使用如 PHP, C/C+等程序连接m&mcached服
19、务器0 memcached的服务器客户端通信并不使用XML等格式,而 使用简单的基于文本行的协议。因此,通过telnet也能在 memcached上保存数据、取得数据基于libev6nt的事件处理 libevent是一套跨平台的事件处理接口的封装,能够兼容包 括这些操作系统:Windows/Linux/BSD/Solaris等操作系统的的事件处理, Memcached使用libevent来进行网络并发连接的处理,能够 保持在很大并发情况下,仍旧能够保持快速的响应能力。,memcache的数据是放入到内存,并且在数据爆满的情况下,使用 LRU算法删除基干客户端的分布式 memcached尽管是吩
20、布式”缓存服务器,但服务器端并没有 分布式功能由各个memcached不会互相通信以我拿信息口 那么,怎样进行分布式呢?这完全取决于客户端的实现° 如图:写段代码说明:mem4.php<?php我的 龟脂上疝两个memshsd服务.$ mem = new Memcache:$mem->addServer(127.0.0J'J1211);$mem->addServerf 127.0.0.T,9999):这里注意,杞key】政入刊11211蝶。的mem名是/9999端口的mem it不要我们赛*有$ mem好象本身推护.if($mem->setfkeyr/
21、henoMEMCACHE_COMPRESSED300) echo add ok!':if($mem->setfkey2,hel(o2MEMCACHE_COMPRESSED300) echo add ok!"iffSmcmsetfkeyS'helloSMEMCACHECOMPRESSED.SOOJH echo add ok!'mem5.php 取出.<?php为何从多个mem中取出你的key?$mem = new Memcache:SmemaddServerfl 27-0.0 J1 J1211): $mem->addServer(112 7-0
22、.0.K9999):$val = $mem->get(,key1):echo '程序中取出分布的值= .$val;总结:1 . mem服务的数据不是同步,数据是分布的2 .把什么数据放入到哪个 memcached是由客户端的 mem对象决定3 .当执行addServer的时候,并不是立即去连接 mem服务,而是通过计算,hash后才去决 定连接哪个mem服务,因此当你大量加入服务器到连接池,没有多余开销memcache的细节讨论生命周期从数据放入mem开始计时,直到时间到了,就销毁 ,如果时间为0,则表示不过期 memcache的数据被销毁的情况如下:1 .时间至ij2 . 重启
23、memcached服务3 .重启memcached服务所在的机器4 . delete / flush 销毁数据如何把session数据放入到 memcached服务中.步骤:1.修改php.ini的配置文件如下:;sesson.save_handler 有 user|files|memcachesession.save_handler = memcachesession.save_path = "tcp:/:11211"测试一把,重启apache测试ok<?php/传统的代码session_start();$_SESSION'name'
24、;尸天龙八部 300'$_SESSION'city'尸beijing'class Dogpublic $name;)$dog1=new Dog;$dog1->name='abcde'$_SESSION'dog'=$dog1;如果session数据入 mem,那他一一定是以 session_id为/key值进行添加取出$name=$_SESSION'name'echo "name=$name"echo "sessionid=".session_id();思考,如果管理员,不让我们修改 php.ini文件,我们如何处理session入memcached 这个功能,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年年会主题策划方案范本
- 黑龙江大庆历年中考作文题(2008-2024)
- 尿毒症培训课件
- 2022年湖北省通信管理局考试真题
- 2025年玻璃自动切割线项目可行性研究报告
- 2025年环形气阀项目可行性研究报告
- 2025年猪苓多糖注射液项目可行性研究报告
- 2025年牛筋塑料桶项目可行性研究报告
- 长江艺术工程职业学院《线性代数及概率统计》2023-2024学年第二学期期末试卷
- 肇庆医学高等专科学校《旅行社运营管理》2023-2024学年第二学期期末试卷
- 2024年地理中考模拟考试地理(江苏泰州卷)(A4考试版)
- 乳腺癌诊治指南与规范(2025年版)解读
- 2024年上海嘉定区区属国有企业招聘真题
- 2025河北建投水务招聘29人易考易错模拟试题(共500题)试卷后附参考答案
- 常德辅警考试题库
- 基于核心素养的初中历史跨学科教学策略研究
- 有理数的加法说课课件2024-2025学年人教版数学七年级上册
- 肺癌化疗护理查房
- 2025年04月中共北京市大兴区委政法委员会公开招聘临时辅助用工4人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- GB/T 18655-2025车辆、船和内燃机无线电骚扰特性用于保护车载接收机的限值和测量方法
- 2025年江苏南通苏北七市高三二模语文作文分析
评论
0/150
提交评论