国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

Laravel Memcached緩存驅(qū)動的配置應(yīng)用實例

2024-05-04 21:50:39
字體:
供稿:網(wǎng)友

對于大型網(wǎng)站(數(shù)據(jù)多,訪問量大)而言,緩存系統(tǒng)是必備組件,其為減輕數(shù)據(jù)庫負載、提高頁面訪問速度、提升系統(tǒng)性能立下汗馬功勞。Laravel作為一個功能完善且強大的PHP框架,自然為緩存系統(tǒng)提供了支持。目前Laravle支持的緩存驅(qū)動包括文件、數(shù)組、數(shù)據(jù)庫、APC、Memcached和Redis,并且為這些驅(qū)動提供了統(tǒng)一的存取接口,這樣做的好處顯而易見:我們可以根據(jù)業(yè)務(wù)需求隨時切換緩存驅(qū)動而不用對業(yè)務(wù)邏輯代碼做任何修改。

Laravel緩存驅(qū)動配置位于config/cache.php,該配置數(shù)組中第一個配置項default用于指定默認緩存驅(qū)動:

'default' => env('CACHE_DRIVER', 'file'),

這里默認緩存驅(qū)動為文件緩存。第二配置項stores是重頭戲,用于配置Laravel支持的6種緩存驅(qū)動:

  1. 'stores' => [ 
  2.  
  3.     'apc' => [ 
  4.         'driver' => 'apc'
  5.     ], 
  6.  
  7.     'array' => [ 
  8.         'driver' => 'array'
  9.     ], 
  10.  
  11.     'database' => [ 
  12.         'driver' => 'database'
  13.         'table' => 'cache'
  14.         'connection' => null, 
  15.     ], 
  16.  
  17.     'file' => [ 
  18.         'driver' => 'file'
  19.         'path' => storage_path('framework/cache'), 
  20.     ], 
  21.  
  22.     'memcached' => [ 
  23.         'driver' => 'memcached'
  24.         'servers' => [ 
  25.             [ 
  26.                 'host' => '127.0.0.1',  
  27.                 'port' => 11211,  
  28.                 'weight' => 100, 
  29.             ], 
  30.         ], 
  31.     ], 
  32.  
  33.     'redis' => [ 
  34.         'driver' => 'redis'
  35.         'connection' => 'default'
  36.     ], 
  37.  
  38. ], 

其中apc表示APC緩存,APC是PHP的一個擴展,其目標是為緩存和優(yōu)化PHP中間碼(opcode)提供一個免費、開源、健壯的框架。更多詳情可參考PHP官方文檔:http://php.net/manual/zh/book.apc.php,APC緩存和Memcached一樣都是基于內(nèi)存的緩存系統(tǒng),性能相當,但局限是只能用于單機緩存,不支持分布式,而實際生產(chǎn)環(huán)境往往并不止一臺web服務(wù)器,所以相對而言,大型網(wǎng)站更多選擇使用Memcached。

數(shù)組緩存驅(qū)動(array)往往僅僅用于測試,好處是不會持久化,只會在一次PHP腳本執(zhí)行的生命周期內(nèi)有效。

文件緩存驅(qū)動(file)往往只用于本地開發(fā)測試,因為文件緩存將緩存存儲到文件中,讀取時從硬盤讀取,性能自然不及基于內(nèi)存的緩存系統(tǒng)如APC或Memcached以及Redis。

數(shù)據(jù)庫緩存驅(qū)動(database)將緩存數(shù)據(jù)存儲到數(shù)據(jù)庫中,使用之前需要在數(shù)據(jù)庫中新建一張表用于存放緩存項,該表表結(jié)構(gòu)可定義如下:

  1. Schema::create('cache'function($table) { 
  2.     $table->string('key')->unique(); 
  3.     $table->text('value'); 
  4.     $table->integer('expiration'); 
  5. }); 

緩存本來就是將數(shù)據(jù)庫中的數(shù)據(jù)讀取后存放到緩存系統(tǒng),雖然數(shù)據(jù)庫緩存在一定程度上提升了系統(tǒng)性能,但對于大型系統(tǒng)而言自然不是最佳選擇。

memcached緩存驅(qū)動基于Memcached,使用之前需要先在系統(tǒng)中安裝Memcached,當然如果你使用的是Homestead虛擬機的話,已經(jīng)為你安裝好了,并且開機自動啟動,我們可以使用如下指令查看其狀態(tài)及啟動端口:

ps -ef | grep memcached

正如我們前面提到的,Memcached是基于內(nèi)存的分布式緩存系統(tǒng),在實際生產(chǎn)環(huán)境中有著廣泛使用。

Redis是近幾年才出現(xiàn)的緩存系統(tǒng),相比Memcached的鍵值對而言支持更多的數(shù)據(jù)結(jié)構(gòu),包括字符串、哈希、列表、集合和有序集合等,正因如此,又被稱作數(shù)據(jù)結(jié)構(gòu)服務(wù)器,Redis也是基于內(nèi)存的,但是可以持久化到硬盤。除了作為緩存系統(tǒng)外,還可以用作NoSQL數(shù)據(jù)庫、消息隊列等。總而言之,功能很強大。關(guān)于Redis我們后續(xù)會單獨講,所以緩存實例這一塊我們將以Memcached作為緩存驅(qū)動為例,系統(tǒng)的講講Laravel中如何使用緩存。

從配置文件說起,memcached配置項中的driver指定使用的緩存驅(qū)動類型為memcached。servers表示使用的安裝Memcached的服務(wù)器,host代表主機名,port代表Memcached監(jiān)聽的端口號,默認為11211,weight代表權(quán)重,因為很多時候我們配置了多臺Memcached服務(wù)器,權(quán)重表示存取的優(yōu)先級。

作為測試,這里我們就使用默認配置好了。

開始之前我們要將默認緩存驅(qū)動改成memcached:

'default' => env('CACHE_DRIVER', 'memcached'),

此外,config/cache.php配置文件中還有最后一個配置項prefix,用于配置緩存鍵的前綴,對于基于內(nèi)存的緩存系統(tǒng)而言,緩存項可能被同一主機上的多個應(yīng)用使用,所以加上前綴以示區(qū)別還是很有必要的。這里我們使用laravelacademy作為前綴好了:

'prefix' => 'laravelacademy',

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 西平县| 阿瓦提县| 荣昌县| 杂多县| 沈丘县| 长春市| 阿拉善右旗| 嘉义市| 景德镇市| 林甸县| 西华县| 务川| 含山县| 河曲县| 许昌县| 怀集县| 仁怀市| 合山市| 乳源| 浦县| 桐城市| 思茅市| 扶余县| 花莲市| 景德镇市| 顺平县| 静安区| 靖江市| 富阳市| 达尔| 霍城县| 邢台市| 房山区| 贵德县| 合山市| 寻甸| 偃师市| 河东区| 九龙城区| 如东县| 闸北区|