《PHP學(xué)習(xí):Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析》要點(diǎn):
本文介紹了PHP學(xué)習(xí):Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
相關(guān)主題:memcache擴(kuò)展 / 鍵值KeyValue存儲(chǔ)數(shù)據(jù)庫(kù)
本文實(shí)例講述了Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法.分享給大家供大家參考,具體如下:PHP應(yīng)用
Memcached緩存配置在任何php環(huán)境下我們都可以配置使用來(lái)提升WEB的性能.對(duì)于大型網(wǎng)站(數(shù)據(jù)多,訪問(wèn)量大)而言,緩存系統(tǒng)是必備組件,其為減輕數(shù)據(jù)庫(kù)負(fù)載、提高頁(yè)面訪問(wèn)速度、提升系統(tǒng)性能立下汗馬功勞.Laravel作為一個(gè)功能完善且強(qiáng)大的PHP框架,自然為緩存系統(tǒng)提供了支持.目前Laravle支持的緩存驅(qū)動(dòng)包括文件、數(shù)組、數(shù)據(jù)庫(kù)、APC、Memcached和Redis,并且為這些驅(qū)動(dòng)提供了統(tǒng)一的存取接口,這樣做的好處顯而易見(jiàn):我們可以根據(jù)業(yè)務(wù)需求隨時(shí)切換緩存驅(qū)動(dòng)而不用對(duì)業(yè)務(wù)邏輯代碼做任何修改.PHP應(yīng)用
Laravel緩存驅(qū)動(dòng)配置位于config/cache.php,該配置數(shù)組中第一個(gè)配置項(xiàng)default用于指定默認(rèn)緩存驅(qū)動(dòng):PHP應(yīng)用
'default' => env('CACHE_DRIVER', 'file'),
這里默認(rèn)緩存驅(qū)動(dòng)為文件緩存.第二配置項(xiàng)stores是重頭戲,用于配置Laravel支持的6種緩存驅(qū)動(dòng):PHP應(yīng)用
'stores' => [ 'apc' => [ 'driver' => 'apc', ], 'array' => [ 'driver' => 'array', ], 'database' => [ 'driver' => 'database', 'table' => 'cache', 'connection' => null, ], 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache'), ], 'memcached' => [ 'driver' => 'memcached', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100, ], ], ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', ], ],
其中apc表示APC緩存,APC是PHP的一個(gè)擴(kuò)展,其目標(biāo)是為緩存和優(yōu)化PHP中間碼(opcode)提供一個(gè)免費(fèi)、開(kāi)源、健壯的框架.更多詳情可參考PHP官方文檔:http://php.net/manual/zh/book.apc.php,APC緩存和Memcached一樣都是基于內(nèi)存的緩存系統(tǒng),性能相當(dāng),但局限是只能用于單機(jī)緩存,不支持分布式,而實(shí)際生產(chǎn)環(huán)境往往并不止一臺(tái)web服務(wù)器,所以相對(duì)而言,大型網(wǎng)站更多選擇使用Memcached.PHP應(yīng)用
數(shù)組緩存驅(qū)動(dòng)(array)往往僅僅用于測(cè)試,好處是不會(huì)持久化,只會(huì)在一次PHP腳本執(zhí)行的生命周期內(nèi)有效.PHP應(yīng)用
文件緩存驅(qū)動(dòng)(file)往往只用于本地開(kāi)發(fā)測(cè)試,因?yàn)槲募彺鎸⒕彺娲鎯?chǔ)到文件中,讀取時(shí)從硬盤(pán)讀取,性能自然不及基于內(nèi)存的緩存系統(tǒng)如APC或Memcached以及Redis.PHP應(yīng)用
數(shù)據(jù)庫(kù)緩存驅(qū)動(dòng)(database)將緩存數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,使用之前需要在數(shù)據(jù)庫(kù)中新建一張表用于存放緩存項(xiàng),該表表結(jié)構(gòu)可定義如下:PHP應(yīng)用
Schema::create('cache', function($table) { $table->string('key')->unique(); $table->text('value'); $table->integer('expiration'); });
緩存本來(lái)就是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取后存放到緩存系統(tǒng),雖然數(shù)據(jù)庫(kù)緩存在一定程度上提升了系統(tǒng)性能,但對(duì)于大型系統(tǒng)而言自然不是最佳選擇.PHP應(yīng)用
memcached緩存驅(qū)動(dòng)基于Memcached,使用之前需要先在系統(tǒng)中安裝Memcached,當(dāng)然如果你使用的是Homestead虛擬機(jī)的話,已經(jīng)為你安裝好了,并且開(kāi)機(jī)自動(dòng)啟動(dòng),我們可以使用如下指令查看其狀態(tài)及啟動(dòng)端口:PHP應(yīng)用
ps -ef | grep memcached
正如我們前面提到的,Memcached是基于內(nèi)存的分布式緩存系統(tǒng),在實(shí)際生產(chǎn)環(huán)境中有著廣泛使用.PHP應(yīng)用
Redis是近幾年才出現(xiàn)的緩存系統(tǒng),相比Memcached的鍵值對(duì)而言支持更多的數(shù)據(jù)結(jié)構(gòu),包括字符串、哈希、列表、集合和有序集合等,正因如此,又被稱作數(shù)據(jù)結(jié)構(gòu)服務(wù)器,Redis也是基于內(nèi)存的,但是可以持久化到硬盤(pán).除了作為緩存系統(tǒng)外,還可以用作NoSQL數(shù)據(jù)庫(kù)、消息隊(duì)列等.總而言之,功能很強(qiáng)大.關(guān)于Redis我們后續(xù)會(huì)單獨(dú)講,所以緩存實(shí)例這一塊我們將以Memcached作為緩存驅(qū)動(dòng)為例,系統(tǒng)的講講Laravel中如何使用緩存.PHP應(yīng)用
從配置文件說(shuō)起,memcached配置項(xiàng)中的driver指定使用的緩存驅(qū)動(dòng)類型為memcached.servers表示使用的安裝Memcached的服務(wù)器,host代表主機(jī)名,port代表Memcached監(jiān)聽(tīng)的端口號(hào),默認(rèn)為11211,weight代表權(quán)重,因?yàn)楹芏鄷r(shí)候我們配置了多臺(tái)Memcached服務(wù)器,權(quán)重表示存取的優(yōu)先級(jí).PHP應(yīng)用
作為測(cè)試,這里我們就使用默認(rèn)配置好了.PHP應(yīng)用
開(kāi)始之前我們要將默認(rèn)緩存驅(qū)動(dòng)改成memcached:PHP應(yīng)用
'default' => env('CACHE_DRIVER', 'memcached'),
此外,config/cache.php配置文件中還有最后一個(gè)配置項(xiàng)prefix,用于配置緩存鍵的前綴,對(duì)于基于內(nèi)存的緩存系統(tǒng)而言,緩存項(xiàng)可能被同一主機(jī)上的多個(gè)應(yīng)用使用,所以加上前綴以示區(qū)別還是很有必要的.這里我們使用laravelacademy作為前綴好了:PHP應(yīng)用
'prefix' => 'laravelacademy',
更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門(mén)與進(jìn)階教程》、《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》、《smarty模板入門(mén)基礎(chǔ)教程》、《php日期與時(shí)間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》PHP應(yīng)用
希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助.PHP應(yīng)用
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/3120.html