下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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ù)組,對象,布爾,二進(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 端口號啟動(dòng)方法不要關(guān)閉控制臺(tái).端口號的范圍:0-65535 ,因?yàn)槎丝谔柺怯脙蓚€(gè)字節(jié)來表示有名端口 : 0-1024 已經(jīng)用程序使用,apache 80 , mysql 3306 , ftp 21 , ssh 22oracle: 1521, stmp: 25使用netstat -an如果看到11211端口在監(jiān)聽,說明啟動(dòng) oknetstat wnb是哪個(gè)程序監(jiān)聽,這個(gè)指令還可以看到有哪些用戶連接到我們的服務(wù)器如果沒有
3、安裝好,原因可能1 .如果你是win7, win7對安全性高,所有,必須以 adminstartor身份來安裝. 你切換成adminstrator ,去安裝,在啟動(dòng)2 .你的memcached.exe目錄有中文,或特殊字符,保證目錄沒有中文和特殊字符(4)準(zhǔn)備研究如果對 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 .增加基本語法是:add key名0存放時(shí)間(秒)數(shù)據(jù)大?。ㄗ址┡e例:add key1 0 30 53 .如何獲取基本語法是: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 .刪除基本語法是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)我們寫程序來完成 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對象實(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ù)需要.希望序列號放入 ,/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.添加對象/* 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('連接數(shù)據(jù)庫失敗');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對象實(shí)例$mem=new Memcache;if(!$mem->connect("",11211)die('連接失敗!');在另外文件中取出對象時(shí),有個(gè)注意的地方,對應(yīng)php5.2這個(gè)版本會(huì)提示錯(cuò)誤/對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 說明 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è)對象保存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í):請大家使用 php程序 memcache.dll完成對 memcahce增刪改查 20min如何使用PHP源碼來操作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é)議簡單 c/s架構(gòu),此時(shí)memcached為服務(wù)器端,我們可以使用如 PHP, C/C+等程序連接m&mcached服
19、務(wù)器0 memcached的服務(wù)器客戶端通信并不使用XML等格式,而 使用簡單的基于文本行的協(xié)議。因此,通過telnet也能在 memcached上保存數(shù)據(jù)、取得數(shù)據(jù)基于libev6nt的事件處理 libevent是一套跨平臺(tái)的事件處理接口的封裝,能夠兼容包 括這些操作系統(tǒng):Windows/Linux/BSD/Solaris等操作系統(tǒng)的的事件處理, Memcached使用libevent來進(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)° 如圖:寫段代碼說明: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對象決定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"測試一把,重啟apache測試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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙聯(lián)戶聯(lián)戶長先進(jìn)主要事跡(6篇)
- 網(wǎng)絡(luò)安全漏洞挖掘算法-洞察分析
- 網(wǎng)絡(luò)安全應(yīng)急響應(yīng)機(jī)制研究洞察報(bào)告-洞察分析
- 《RFID基本原理》課件
- 心理健康與老年癡呆預(yù)防-洞察分析
- 土壤養(yǎng)分精準(zhǔn)管理效果評估-洞察分析
- 虛擬卡在虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR)技術(shù)中的研究-洞察分析
- 醫(yī)院防火應(yīng)急預(yù)案范文(7篇)
- 人教版教學(xué)課件基因和染色體的關(guān)系:減數(shù)分裂和受精作用
- 農(nóng)業(yè)科技創(chuàng)新的跨學(xué)科合作模式
- 2024年-江蘇省安全員-A證考試題庫及答案
- 2024年青干班培訓(xùn)個(gè)人總結(jié)
- 2021~2022學(xué)年廣東廣州越秀區(qū)八年級上學(xué)期期末語文試卷(含答案)
- 固態(tài)電池生產(chǎn)(1GWH)項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)拿地
- 中建一期工程履帶吊安拆方案
- 廣東省深圳市坪山區(qū)2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題【含答案】
- 2024游樂新“室”界室內(nèi)樂園洞察與趨勢研究報(bào)告
- 校園餐整治存在的問題及建議
- 2024秋期國家開放大學(xué)??啤陡叩葦?shù)學(xué)基礎(chǔ)》一平臺(tái)在線形考(形考任務(wù)一至四)試題及答案
- 國開(內(nèi)蒙古)2024年《創(chuàng)新創(chuàng)業(yè)教育基礎(chǔ)》形考任務(wù)1-3終考任務(wù)答案
- 2023建筑施工技術(shù)規(guī)范
評論
0/150
提交評論