大型網站必備組件:降低資料庫負載、提升響應速度、支援分佈式叢集。Laravel 內建統一快取介面,支援 6 種驅動無縫切換。
| 驅動 | 儲存介質 | 分佈式 | 持久化 | 適用場景 |
|---|---|---|---|---|
| array | 記憶體(請求級) | ❌ | ❌ | 測試專用 |
| file | 磁碟 | ❌ | ✅ | 本地開發、小型專案 |
| database | 資料庫 | ✅ | ✅ | 簡單部署、無額外服務 |
| apc | 共享記憶體 | ❌ | ❌ | 單機高效能 |
| memcached | 分佈式記憶體 | ✅ | ❌ | 生產環境標準選擇 |
| redis | 記憶體+可選持久化 | ✅ | ✅ | 功能豐富、排行榜、佇列 |
# Ubuntu/Debian sudo apt install memcached php-memcached # 檢查服務狀態 ps -ef | grep memcached # 預設監聽 127.0.0.1:11211 # Homestead 內建已啟動,無需額外安裝
config/cache.php)// 1. 設定預設驅動
'default' => env('CACHE_DRIVER', 'memcached'),
// 2. Memcached 伺服器陣列 (支援多台、權重)
'memcached' => [
'driver' => 'memcached',
'servers' => [
['host' => '127.0.0.1', 'port' => 11211, 'weight' => 100],
// 生產環境可加入多台:
// ['host' => '10.0.0.2', 'port' => 11211, 'weight' => 50],
],
],
// 3. 快取鍵前綴 (多專案共用 Memcached 必須)
'prefix' => 'laravel_',
CACHE_DRIVER=memcached
use Illuminate\Support\Facades\Cache;
// 寫入 (TTL 分鐘)
Cache::put('key', 'value', 60);
Cache::forever('key', 'value'); // 永久
// 讀取
$value = Cache::get('key');
$value = Cache::get('key', 'default'); // 預設值
// 判斷存在
if (Cache::has('key')) { ... }
// 刪除
Cache::forget('key');
Cache::flush(); // 清空所有 (慎用)
// 原子增減 (計數器)
Cache::increment('counter');
Cache::decrement('counter');
Cache::increment('counter', 5); // 步長
// 記憶體 (get + put)
$value = Cache::remember('key', 60, fn() => expensiveQuery());
$value = Cache::rememberForever('key', fn() => expensiveQuery());
// 標籤支援 (需 memcached/redis 驅動)
Cache::tags(['users', 'posts'])->put('key', $data, 60);
Cache::tags('users')->flush(); // 批次清理
// config/session.php
'driver' => env('SESSION_DRIVER', 'memcached'),
'connection' => 'default', // 對應 cache.php 中的 memcached 設定
memcached.sess_persistent=1prefix:module:type:id,避免衝突、便於管理igbinary 擴展,`ini_set('memcached.serializer', 'igbinary')`| 現象 | 可能原因 | 解決 |
|---|---|---|
| 連線失敗 | 防火牆/安全組阻擋 11211 埠 | 開放埠、檢查 bind IP |
| 資料不一致 | 多台伺服器時間不同步 | 啟用 NTP 時間同步 |
| 記憶體不足驅逐 | TTL 過長、無淘汰策略 | 調整 TTL、增加記憶體、啟用 LRU |
| Session 丟失 | Memcached 重啟、驅逐 | Session 關鍵資料備份資料庫 |
Laravel Memcached 驅動配置簡單、介面統一、效能卓越。掌握「配置 → 使用 → 監優 → 維運」全鏈路,讓快取真正成為系統效能的加速器而非隱患來源。