首頁 >php教程 >PHP开发 >Laravel Memcached快取驅動的配置與應用方法分析

Laravel Memcached快取驅動的配置與應用方法分析

高洛峰
高洛峰原創
2016-12-28 16:32:391276瀏覽

本文實例講述了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框架的PHP程式設計有所幫助。

更多Laravel Memcached快取驅動的配置與應用方法分析相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn