本文實例講述了Laravel Memcached緩存驅動的配置與應用方法。分享給大家供大家參考,具體如下:
Memcached緩存配置在任何php環境下我們都可以配置使用來提升WEB的性能。對於大型網站(數據多,訪問量大)而言,緩存系統是必備組件,其為減輕數據庫負載、提高頁面訪問速度、提升系統性能立下汗馬功勞。Laravel作為一個功能完善且強大的PHP框架,自然為緩存系統提供了支持。目前Laravle支持的緩存驅動包括文件、數組、數據庫、APC、Memcached和Redis,並且為這些驅動提供了統一的存取接口,這樣做的好處顯而易見:我們可以根據業務需求隨時切換緩存驅動而不用對業務邏輯代碼做任何修改。
Laravel緩存驅動配置位於config/cache.php,該配置數組中第一個配置項default用於指定默認緩存驅動:
'default' => env('CACHE_DRIVER', 'file'),
這裡默認緩存驅動為文件緩存。第二配置項stores是重頭戲,用於配置Laravel支持的6種緩存驅動:
'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的一個擴展,其目標是為緩存和優化PHP中間碼(opcode)提供一個免費、開源、健壯的框架。更多詳情可參考PHP官方文檔:http://php.net/manual/zh/book.apc.php,APC緩存和Memcached一樣都是基於內存的緩存系統,性能相當,但局限是只能用於單機緩存,不支持分布式,而實際生產環境往往並不止一台web服務器,所以相對而言,大型網站更多選擇使用Memcached。
數組緩存驅動(array)往往僅僅用於測試,好處是不會持久化,只會在一次PHP腳本執行的生命周期內有效。
文件緩存驅動(file)往往只用於本地開發測試,因為文件緩存將緩存存儲到文件中,讀取時從硬盤讀取,性能自然不及基於內存的緩存系統如APC或Memcached以及Redis。
數據庫緩存驅動(database)將緩存數據存儲到數據庫中,使用之前需要在數據庫中新建一張表用於存放緩存項,該表表結構可定義如下:
Schema::create('cache', function($table) { $table->string('key')->unique(); $table->text('value'); $table->integer('expiration'); });
緩存本來就是將數據庫中的數據讀取後存放到緩存系統,雖然數據庫緩存在一定程度上提升了系統性能,但對於大型系統而言自然不是最佳選擇。
memcached緩存驅動基於Memcached,使用之前需要先在系統中安裝Memcached,當然如果你使用的是Homestead虛擬機的話,已經為你安裝好了,並且開機自動啟動,我們可以使用如下指令查看其狀態及啟動端口:
ps -ef | grep memcached
正如我們前面提到的,Memcached是基於內存的分布式緩存系統,在實際生產環境中有著廣泛使用。
Redis是近幾年才出現的緩存系統,相比Memcached的鍵值對而言支持更多的數據結構,包括字符串、哈希、列表、集合和有序集合等,正因如此,又被稱作數據結構服務器,Redis也是基於內存的,但是可以持久化到硬盤。除了作為緩存系統外,還可以用作NoSQL數據庫、消息隊列等。總而言之,功能很強大。關於Redis我們後續會單獨講,所以緩存實例這一塊我們將以Memcached作為緩存驅動為例,系統的講講Laravel中如何使用緩存。
從配置文件說起,memcached配置項中的driver指定使用的緩存驅動類型為memcached。servers表示使用的安裝Memcached的服務器,host代表主機名,port代表Memcached監聽的端口號,默認為11211,weight代表權重,因為很多時候我們配置了多台Memcached服務器,權重表示存取的優先級。
作為測試,這裡我們就使用默認配置好了。
開始之前我們要將默認緩存驅動改成memcached:
'default' => env('CACHE_DRIVER', 'memcached'),
此外,config/cache.php配置文件中還有最後一個配置項prefix,用於配置緩存鍵的前綴,對於基於內存的緩存系統而言,緩存項可能被同一主機上的多個應用使用,所以加上前綴以示區別還是很有必要的。這裡我們使用laravelacademy作為前綴好了:
'prefix' => 'laravelacademy',
更多關於Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家基於Laravel框架的PHP程序設計有所幫助。