memcache

作者:燁竹

Memcache簡(jiǎn)介

Memcache是一個(gè)基于內(nèi)存的鍵值對(duì)的緩存系統(tǒng)教藻,具備讀寫(xiě)速度比較高的特性,同時(shí)支持分布式存儲(chǔ)

數(shù)據(jù)存儲(chǔ)內(nèi)存:Memcache將數(shù)據(jù)直接存儲(chǔ)在內(nèi)存中。因此內(nèi)存中數(shù)據(jù)容易丟失(服務(wù)器重啟會(huì)丟失數(shù)據(jù))

鍵值對(duì):例如PHP中數(shù)組 通過(guò)名稱(chēng)就可以找到對(duì)應(yīng)的數(shù)據(jù)

緩存系統(tǒng):臨時(shí)存儲(chǔ)數(shù)據(jù)的介質(zhì)。最終在數(shù)據(jù)庫(kù)中一定會(huì)存在對(duì)應(yīng)的數(shù)據(jù)作為一個(gè)備份

分布式存儲(chǔ):每一個(gè)只存儲(chǔ)一部分?jǐn)?shù)據(jù)寨腔。對(duì)于memcache嚴(yán)格上自己本身是不支持分布式存儲(chǔ),是借助于第三方的擴(kuò)展實(shí)現(xiàn)分布式存儲(chǔ)

memcache安裝

①創(chuàng)建memcache根目錄
②拷貝memcache的安裝包文件
③使用<u>超級(jí)管理員</u>打開(kāi)cmd進(jìn)入memcache目錄


④以非服務(wù)器的方式安裝memcache

此時(shí)為非服務(wù)的方式安裝啟動(dòng)memcache目前cmd處于掛起狀態(tài)不能正常操作
⑤以服務(wù)方式安裝memcache

安裝之后在自己計(jì)算機(jī)的服務(wù)中查看結(jié)果

⑥啟動(dòng)memcache服務(wù)
找到memcache的服務(wù)點(diǎn)擊啟動(dòng)

或者使用cmd命令實(shí)現(xiàn)

memcache的相關(guān)參數(shù)

-p:指定memcache TCP協(xié)議的通信端口 默認(rèn)為11211端口
-d :start/stop 用于啟動(dòng)或者關(guān)閉嗎memcache
-d: install/uninstall:將memcache安裝服務(wù)或者卸載服務(wù)
-u:指定用戶(hù) 在Linux下使用
-m:指定memcache最大使用的內(nèi)存 默認(rèn)為64M
-c:指定memcache最大的并發(fā)數(shù) 默認(rèn)為1024
memcache.exe -help

memcache常用的操作指令

memcache支持TCP協(xié)議的通信數(shù)據(jù)操作可以使用Telnet工具率寡,所以這一些指令在Telnet工具中完成迫卢;Telnet工具用法:http://www.reibang.com/p/6c80a53c0b66

1、set指令
作用:設(shè)置數(shù)據(jù)
語(yǔ)法:set 鍵名 0|1(是否壓縮) 0(有效時(shí)間0代表不過(guò)期) 3(內(nèi)容的長(zhǎng)度)(注意寫(xiě)完長(zhǎng)度需要回車(chē))

鍵名:一個(gè)名稱(chēng)標(biāo)識(shí)冶共,此標(biāo)識(shí)有要求最多250個(gè)字符乾蛤。對(duì)于使用鍵名建議簡(jiǎn)短并且能表示含義 例如user_info_id_2

是否壓縮:
0不壓縮:直接將內(nèi)容原生存儲(chǔ),此方式內(nèi)存是的使用空間比較大(空間換時(shí)間)
1壓縮:將內(nèi)容按照規(guī)則壓縮為更小然后存儲(chǔ)捅僵,使用壓縮可以節(jié)省內(nèi)存空間但是相對(duì)于不壓縮在操作上會(huì)略慢(時(shí)間換空間)

有效時(shí)間:0代表不過(guò)期一般永遠(yuǎn)有效家卖。可以設(shè)置為一個(gè)具體秒數(shù)表示多少秒之后過(guò)期庙楚。在實(shí)際項(xiàng)目中一般對(duì)于此值都會(huì)設(shè)置一個(gè)過(guò)期的時(shí)間

內(nèi)容長(zhǎng)度:一定要按照具體的內(nèi)容的字符數(shù)編寫(xiě)長(zhǎng)度

值:寫(xiě)入到內(nèi)存中的數(shù)據(jù) 最大只能為1M

①案例一


②案例二

Set一個(gè)不存在的key會(huì)創(chuàng)建該key 設(shè)置一個(gè)已經(jīng)存在的會(huì)修改對(duì)應(yīng)的值篡九,即set的作用(添加與修改)
③案例三

此時(shí)表示age這個(gè)可用有效時(shí)間只有30秒,一旦30秒一到就不能讀取數(shù)據(jù)(失效)

2醋奠、get指令
作用:讀取數(shù)據(jù)
語(yǔ)法:get 鍵名稱(chēng)

3榛臼、add指令
作用:給key設(shè)置數(shù)據(jù),只能針對(duì)一個(gè)不存在的key進(jìn)行設(shè)置(add只能添加不能修改)
語(yǔ)法:語(yǔ)法同set


4窜司、delete指令
作用:刪除key
語(yǔ)法:delete 鍵名


5沛善、incr指令
作用:設(shè)置自增長(zhǎng)
語(yǔ)法 incr 鍵名 增加的數(shù)字


6、decr指令
作用:自減
語(yǔ)法:同incr

7塞祈、flush_all指令
作用:清空memcache中所有數(shù)據(jù)
語(yǔ)法:flush_all



此命令只能在測(cè)試中使用金刁。

8、stats指令
作用:查看memcache狀態(tài)



Memcache命中率=get_hits/cmd_get*100%
一般命中率在70-90之間勉強(qiáng)可以接受议薪。

PHP操作memcache

注意:PHP對(duì)于memcache擴(kuò)展有兩套尤蛮。另外一套為memcached擴(kuò)展

1、php開(kāi)啟memcache擴(kuò)展

①下載Windows下的PHP擴(kuò)展(php7)
下載地址:https://github.com/keyesone66/php7_memcache.dell.git聲明這是偷的別人的版本庫(kù)里面的內(nèi)容斯议,不會(huì)做更新产捞,本人只做收藏;來(lái)源:https://github.com/nono303/PHP7-memcache-dll
具體下載時(shí)需要注意 使用的編譯器(VC14)哼御、是否線程安裝(ts/nts)坯临、PHP的版本。所有信息都可以通過(guò)PHPinfo查看

②php.ini查看擴(kuò)展目錄


③將擴(kuò)展文件拷貝到擴(kuò)展目錄下

④php.ini修改PHP的配置文件使用擴(kuò)展

⑤重啟再次查看phpinfo

⑥測(cè)試

memcache支持的數(shù)據(jù)類(lèi)型

memcache對(duì)于PHP中的數(shù)據(jù)類(lèi)型除了資源之外其他的都可以支持使用(由于資源變量經(jīng)過(guò)序列化與反序列化之后結(jié)果變化)恋昼,從本質(zhì)上memcache支持的數(shù)據(jù)類(lèi)型只有一種--字符串的數(shù)據(jù)類(lèi)型看靠;
下面具體詳解:

基本數(shù)據(jù)類(lèi)型:布爾,整型,字符串,浮點(diǎn);支持所有液肌;


復(fù)合數(shù)據(jù)類(lèi)型:數(shù)組,對(duì)象;支持所有


特殊數(shù)據(jù)類(lèi)型:NULL挟炬,資源;簡(jiǎn)單理解

使用telnet客戶(hù)端查看數(shù)據(jù)




從上述結(jié)果可知嗦哆,memcache中所存儲(chǔ)的數(shù)組格式及對(duì)象格式的數(shù)據(jù)在memcache中都是經(jīng)過(guò)序列化之后的字符串谤祖。從嚴(yán)格上說(shuō)memcache只支持字符串格式的數(shù)據(jù);對(duì)于PHP中的特殊數(shù)據(jù)類(lèi)型只有空可以支持;

memcache管理工具

下載:$ git clone https://github.com/junstor/memadmin.git


memcache使用

三種使用場(chǎng)景:作為緩存系統(tǒng),Session共享吝秕,作為分布式存儲(chǔ)數(shù)據(jù)

作為緩存使用

1泊脐、讀取數(shù)據(jù)時(shí)先讀取緩存系統(tǒng)中的內(nèi)容,有則直接使用否則在讀取數(shù)據(jù)庫(kù)獲取原始數(shù)據(jù)然后在寫(xiě)入到緩存系統(tǒng)中
2烁峭、當(dāng)數(shù)據(jù)發(fā)生變化修改原始數(shù)據(jù)之后需要將緩存中的內(nèi)容進(jìn)行更新

案例一:用戶(hù)信息緩存
考慮當(dāng)用戶(hù)登錄完成之后會(huì)經(jīng)常使用用戶(hù)的一起信息因此可以在用戶(hù)登錄完成之后將信息緩存到memcache中
①當(dāng)用戶(hù)登錄完成設(shè)置數(shù)據(jù)


②使用緩存
后期可以在任何想要使用用戶(hù)信息的地方直接讀取memcache中的內(nèi)容容客。例如member控制器中使用用戶(hù)信息

案例二:商品關(guān)注功能實(shí)現(xiàn)
①添加關(guān)注

②查看關(guān)注的商品

分布式存儲(chǔ)
1.memcache中分布式存儲(chǔ)
每臺(tái)memcache服務(wù)器中只保存一部分?jǐn)?shù)據(jù)

2、Linux搭建memcache服務(wù)
http://www.reibang.com/p/7f185ad792b4

實(shí)現(xiàn)memcache分布式存儲(chǔ)
①關(guān)閉Linux下的防火墻
systemctl restart iptables.service
②創(chuàng)建代碼實(shí)現(xiàn)分布式存儲(chǔ)

<?php
$obj =new Memcache();
$obj -> addServer('127.0.0.1',11211);
$obj -> addServer('192.168.139.128',11211);
$obj->set('age1',1);
$obj->set('age2',2);
$obj->set('age3',3);
$obj->set('age4',4);
$obj->set('age5',5);
$obj->set('age6',6);
/*$obj -> connect('127.0.0.1',11211);
$res =$obj->set('keyname','keyvalue',0,0);
var_dump($res);*/
?>

③查看數(shù)據(jù)結(jié)果



192.168.116.135中的數(shù)據(jù)



關(guān)于memcache的分布式的存儲(chǔ)是由PHP的擴(kuò)展實(shí)現(xiàn)约郁,會(huì)根據(jù)服務(wù)器已經(jīng)具體的key的名稱(chēng)準(zhǔn)確的定位具體數(shù)據(jù)存儲(chǔ)的位置
Memcache分布式:可以擴(kuò)充單memcache服務(wù)器存儲(chǔ)上線并且也可以解決并發(fā)問(wèn)題

memcache存儲(chǔ)session

1.1缩挑、session的存儲(chǔ)方式
1、session默認(rèn)存儲(chǔ)在文件
2鬓梅、Session存儲(chǔ)到數(shù)據(jù)庫(kù)
3供置、使用memcache存儲(chǔ)session信息
1.2、文件存儲(chǔ)方式(默認(rèn)方式)
優(yōu)點(diǎn):任何操作系統(tǒng)都可以支持此方式
缺點(diǎn):速度相對(duì)比較慢绽快。負(fù)載均衡項(xiàng)目下不能使用
1.3芥丧、數(shù)據(jù)庫(kù)的存儲(chǔ)方式
優(yōu)點(diǎn):速度相對(duì)文件提升并且解決了負(fù)載的問(wèn)題
缺點(diǎn):增加數(shù)據(jù)庫(kù)的壓力
1.4紧阔、memcache存儲(chǔ)session
優(yōu)點(diǎn):提升速度并且解決負(fù)載問(wèn)題 并且也減少了mysql的壓力
1.5、實(shí)現(xiàn)memcache存儲(chǔ)session
前置條件:需要有能夠正常工作的memcache服務(wù)器
1.5.1续担、方式一修改配置文件
①修改PHP的配置文件


②重啟apache
③編寫(xiě)代碼測(cè)試

訪問(wèn)測(cè)試

查看memcache中的內(nèi)容

1.5.2擅耽、方式二代碼中實(shí)現(xiàn)
對(duì)于方式一由于是直接修改配置文件回導(dǎo)致服務(wù)器下所有的項(xiàng)目的session都會(huì)寫(xiě)入到memcache中。
①還原session的存儲(chǔ)為默認(rèn)的文件方式
!](https://upload-images.jianshu.io/upload_images/11994491-ac9caa2aca463781.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
②重啟apache
③創(chuàng)建代碼測(cè)試

查看結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末物遇,一起剝皮案震驚了整個(gè)濱河市乖仇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌询兴,老刑警劉巖乃沙,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诗舰,居然都是意外死亡警儒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)始衅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冷蚂,“玉大人,你說(shuō)我怎么就攤上這事汛闸〗胀眩” “怎么了何缓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蟆炊,道長(zhǎng)户秤,這世上最難降的妖魔是什么吐根? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任赔蒲,我火速辦了婚禮,結(jié)果婚禮上厘肮,老公的妹妹穿的比我還像新娘愧口。我一直安慰自己,他們只是感情好类茂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布耍属。 她就那樣靜靜地躺著,像睡著了一般巩检。 火紅的嫁衣襯著肌膚如雪厚骗。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天兢哭,我揣著相機(jī)與錄音领舰,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冲秽,可吹牛的內(nèi)容都是我干的舍咖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锉桑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谎仲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起刨仑,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夹姥,沒(méi)想到半個(gè)月后杉武,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辙售,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年轻抱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旦部。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祈搜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出士八,到底是詐尸還是另有隱情容燕,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布婚度,位于F島的核電站蘸秘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蝗茁。R本人自食惡果不足惜醋虏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哮翘。 院中可真熱鬧颈嚼,春花似錦、人聲如沸饭寺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)佩研。三九已至柑肴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旬薯,已是汗流浹背晰骑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硕舆。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓秽荞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抚官。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扬跋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1、memcache的概念凌节? Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng)钦听,通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨...
    桖辶殤閱讀 2,230評(píng)論 2 12
  • 一、MemCache簡(jiǎn)介 session MemCache是一個(gè)自由倍奢、源碼開(kāi)放朴上、高性能、分布式的分布式內(nèi)存對(duì)象緩存...
    李偉銘MIng閱讀 3,789評(píng)論 2 13
  • (一):基礎(chǔ)概念 memcache是什么? Memcache 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng)卒煞,用于動(dòng)態(tài)Web...
    楚江云閱讀 1,199評(píng)論 0 5
  • http://mp.weixin.qq.com/s/_-ywTouLXaeU4XBxIUZKkg
    無(wú)用課堂閱讀 161評(píng)論 0 0
  • 我們的人生中總是有那么一段時(shí)光畔裕,迷茫又痛苦衣撬。心里有著無(wú)數(shù)的想法卻無(wú)法實(shí)現(xiàn),人生有著偉大的目標(biāo)卻無(wú)從下手扮饶。 你會(huì)不會(huì)...
    夕言細(xì)語(yǔ)閱讀 16,203評(píng)論 100 604