版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Memcached 技術(shù) 介紹:memcached是一種緩存技術(shù),他可以把你的數(shù)據(jù)放入內(nèi)存,從而通過內(nèi)存訪問提速,因?yàn)閮?nèi)存最快的,memcached技術(shù)的主要目的提速,在memachec中維護(hù)了一張大的 hashtable表,該表是在內(nèi)存,表的結(jié)構(gòu)是key value字串(字串,數(shù)值,數(shù)組,對(duì)象,布爾,二進(jìn)制數(shù)據(jù),null)安裝并使用 memcached安裝步驟(1)下載memcached軟件(2)安裝進(jìn)入cmd,切換到 memcached.exe文件所在目錄memcached.exe -d install(3)啟動(dòng) memcached第一種,可以到服務(wù)點(diǎn)擊啟動(dòng)第二種,命令行memcached
2、.exe -m 200MB -d start 【以 deamon 方式啟動(dòng) 默認(rèn) 64M 】如果你在啟動(dòng)時(shí),win7啟動(dòng)不成功,則可以使用如下方法memcached.exe -p 端口號(hào)啟動(dòng)方法不要關(guān)閉控制臺(tái).端口號(hào)的范圍:0-65535 ,因?yàn)槎丝谔?hào)是用兩個(gè)字節(jié)來(lái)表示有名端口 : 0-1024 已經(jīng)用程序使用,apache 80 , mysql 3306 , ftp 21 , ssh 22oracle: 1521, stmp: 25使用netstat -an如果看到11211端口在監(jiān)聽,說(shuō)明啟動(dòng) oknetstat wnb是哪個(gè)程序監(jiān)聽,這個(gè)指令還可以看到有哪些用戶連接到我們的服務(wù)器如果沒有
3、安裝好,原因可能1 .如果你是win7, win7對(duì)安全性高,所有,必須以 adminstartor身份來(lái)安裝. 你切換成adminstrator ,去安裝,在啟動(dòng)2 .你的memcached.exe目錄有中文,或特殊字符,保證目錄沒有中文和特殊字符(4)準(zhǔn)備研究如果對(duì) memcached進(jìn)彳f curd操彳.看看telnet如何操作 (curd)1 .登錄到telnet連接到memcached服務(wù)telnet 11211如果你們不能使用telnet是因?yàn)橄到y(tǒng)不存在telnet.exe ,就可以到其它機(jī) 器上拷貝telnet.exe 放在 c:windowssystem32
4、即可2 .增加基本語(yǔ)法是:add key名0存放時(shí)間(秒)數(shù)據(jù)大小(字符)舉例:add key1 0 30 53 .如何獲取基本語(yǔ)法是:get key 值get key14 .修改set key名0存放時(shí)間 數(shù)據(jù)大小.舉例:set keyl 0 40 5?如果keyl不存在,則相當(dāng)于增加新,如果存在,則相當(dāng)有替換 replace key名 存放時(shí)間 數(shù)據(jù)大小replace keyl 0 40 5?如果keyl不存在,則失敗,這個(gè)指令要求key必須存在5 .刪除基本語(yǔ)法是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可以統(tǒng)一把數(shù)據(jù)清空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這里主要大家可以去計(jì)算出命中率cmd_hits/cmd_get .越高越好.如何使用php程序操作我們的 memcached服務(wù)curd.步驟,準(zhǔn)備工作.(1)把 php_memcache.d
7、ll 文件拷貝 php 的 ext 下?不同版本的php所使用的 php_memcache.dll的版本不一樣(2)修改php.ini文件,加載 php_memcache.dll (該文件就是封裝了一堆函數(shù));力口載 php_memcache.dll 文件extension=php_memcache.dll(3)重新啟動(dòng)apache(4)我們寫程序來(lái)完成 curd操作.細(xì)節(jié):在我們添加數(shù)據(jù)的時(shí)候,如果bool Memcache:add ( string $key , mixed $var , int $flag , int $expire )如果報(bào)expire設(shè)為0表示,永不過期.(只要mem
8、cache不重新啟動(dòng),就永遠(yuǎn)在 mem中)exprie直接給的是秒數(shù),則最大 30*3600*24如果你希望保持時(shí)間超過30 time()+天數(shù)*3600*24即可最后代碼:mem1.php<?php創(chuàng)建一個(gè)mem對(duì)象實(shí)例$mem=new Memcache;if(!$mem->connect("",11211)die('連接失敗!);增加/1.增加一個(gè)字串/* if($mem->set('key1',"beijing",MEMCACHE_COMPRESSED,60)echo 添加 ok'
9、*/2.添加數(shù)值/* if($mem->set('key1',100,MEMCACHE_COMPRESSED,60)echo 添加 ok'*/3.添加數(shù)組在添加數(shù)組是,根據(jù)需要.希望序列號(hào)放入 ,/serialize<=>unserialize , 如果根據(jù)需要,也可以 json_encode <=> json_decode $arr=array("bj",'tj');if($mem->set('key1',$arr,MEMCACHE_COMPRESSED,time()+31*360
10、0*24)echo '添加數(shù)組 ok99111'/4.添加對(duì)象/* 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 '添加對(duì)象ok'*/5.添加null布爾值/* if($mem->set(
11、39;key1',false,MEMCACHE_COMPRESSED,60)echo '添加布爾ok'*/6.資源類型放入./* $con=mysql_connect("","root","root");if(!$con)die('連接數(shù)據(jù)庫(kù)失敗');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這個(gè)文件去操作 memcached服務(wù)創(chuàng)建一個(gè)mem對(duì)象實(shí)例$mem=new Memcache;if(!$mem->connect("",11211)die('連接失敗!');在另外文件中取出對(duì)象時(shí),有個(gè)注意的地方,對(duì)應(yīng)php5.2這個(gè)版本會(huì)提示錯(cuò)誤/對(duì)php5.3這個(gè)版本會(huì)提示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 說(shuō)明 serilize 和 json_encode 用法:/什么時(shí)彳使用 serilize什么時(shí)候使用json_encode ajax配合<?phpclass Dogpublic Jname:public $age:public function construct($ namet $age)$this->name=3naine:$this->age=$age:)
15、$dog2 = new Dog ('小美14。):我方建也這個(gè)對(duì)象保存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):練習(xí):請(qǐng)大家使用 php程序 memcache.dll完成對(duì) memcahce增刪改查 20min如何使用PHP源碼來(lái)操作memcached服務(wù)如果管理員不讓我們?nèi)ゼ虞dmemcache.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機(jī)制的深入了解基于C后架構(gòu),協(xié)議簡(jiǎn)單 c/s架構(gòu),此時(shí)memcached為服務(wù)器端,我們可以使用如 PHP, C/C+等程序連接m&mcached服
19、務(wù)器0 memcached的服務(wù)器客戶端通信并不使用XML等格式,而 使用簡(jiǎn)單的基于文本行的協(xié)議。因此,通過telnet也能在 memcached上保存數(shù)據(jù)、取得數(shù)據(jù)基于libev6nt的事件處理 libevent是一套跨平臺(tái)的事件處理接口的封裝,能夠兼容包 括這些操作系統(tǒng):Windows/Linux/BSD/Solaris等操作系統(tǒng)的的事件處理, Memcached使用libevent來(lái)進(jìn)行網(wǎng)絡(luò)并發(fā)連接的處理,能夠 保持在很大并發(fā)情況下,仍舊能夠保持快速的響應(yīng)能力。,memcache的數(shù)據(jù)是放入到內(nèi)存,并且在數(shù)據(jù)爆滿的情況下,使用 LRU算法刪除基干客戶端的分布式 memcached盡管是吩
20、布式”緩存服務(wù)器,但服務(wù)器端并沒有 分布式功能由各個(gè)memcached不會(huì)互相通信以我拿信息口 那么,怎樣進(jìn)行分布式呢?這完全取決于客戶端的實(shí)現(xiàn)° 如圖:寫段代碼說(shuō)明:mem4.php<?php我的 龜脂上疝兩個(gè)memshsd服務(wù).$ mem = new Memcache:$mem->addServer(127.0.0J'J1211);$mem->addServerf 127.0.0.T,9999):這里注意,杞key】政入刊11211蝶。的mem名是/9999端口的mem it不要我們賽*有$ mem好象本身推護(hù).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為何從多個(gè)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;總結(jié):1 . mem服務(wù)的數(shù)據(jù)不是同步,數(shù)據(jù)是分布的2 .把什么數(shù)據(jù)放入到哪個(gè) memcached是由客戶端的 mem對(duì)象決定3 .當(dāng)執(zhí)行addServer的時(shí)候,并不是立即去連接 mem服務(wù),而是通過計(jì)算,hash后才去決 定連接哪個(gè)mem服務(wù),因此當(dāng)你大量加入服務(wù)器到連接池,沒有多余開銷memcache的細(xì)節(jié)討論生命周期從數(shù)據(jù)放入mem開始計(jì)時(shí),直到時(shí)間到了,就銷毀 ,如果時(shí)間為0,則表示不過期 memcache的數(shù)據(jù)被銷毀的情況如下:1 .時(shí)間至ij2 . 重啟
23、memcached服務(wù)3 .重啟memcached服務(wù)所在的機(jī)器4 . delete / flush 銷毀數(shù)據(jù)如何把session數(shù)據(jù)放入到 memcached服務(wù)中.步驟:1.修改php.ini的配置文件如下:;sesson.save_handler 有 user|files|memcachesession.save_handler = memcachesession.save_path = "tcp:/:11211"測(cè)試一把,重啟apache測(cè)試ok<?php/傳統(tǒng)的代碼session_start();$_SESSION'name'
24、;尸天龍八部 300'$_SESSION'city'尸beijing'class Dogpublic $name;)$dog1=new Dog;$dog1->name='abcde'$_SESSION'dog'=$dog1;如果session數(shù)據(jù)入 mem,那他一一定是以 session_id為/key值進(jìn)行添加取出$name=$_SESSION'name'echo "name=$name"echo "sessionid=".session_id();思考,如果管理員,不讓我們修改 php.ini文件,我們?nèi)绾翁幚韘ession入memcached 這個(gè)功能,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年人照護(hù)服務(wù)協(xié)議
- 個(gè)人車位租賃標(biāo)準(zhǔn)化協(xié)議樣本2024年版版B版
- 餐飲項(xiàng)目合作經(jīng)營(yíng)簡(jiǎn)單協(xié)議書
- 幼兒園承包協(xié)議
- 2024滕瑾與金橋電子公司關(guān)于電子產(chǎn)品銷售的合同
- 2024智能物流倉(cāng)儲(chǔ)管理系統(tǒng)技術(shù)開發(fā)合同
- 個(gè)人活動(dòng)場(chǎng)地租賃協(xié)議樣本版A版
- 2025年度高端市場(chǎng)分析創(chuàng)新咨詢服務(wù)合同模板
- 2024年濕地生態(tài)修復(fù)綠化施工合同范本
- 增強(qiáng)四個(gè)意識(shí)發(fā)言稿
- 常用靜脈藥物溶媒的選擇
- 當(dāng)代西方文學(xué)理論知到智慧樹章節(jié)測(cè)試課后答案2024年秋武漢科技大學(xué)
- 2024年預(yù)制混凝土制品購(gòu)銷協(xié)議3篇
- 2024年中國(guó)陶瓷碗盆市場(chǎng)調(diào)查研究報(bào)告
- 2024年中國(guó)心力衰竭診斷和治療指南2024版
- HCCDP 云遷移認(rèn)證理論題庫(kù)
- 烹飪專業(yè)課程及課表設(shè)置
- 美國(guó)UNF和unc螺紋標(biāo)準(zhǔn)
- 汽車修理工(初級(jí))評(píng)分記錄表
- 工程結(jié)算單(樣本)
- 日常物業(yè)管理服務(wù)流程圖
評(píng)論
0/150
提交評(píng)論