首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Laravel Memcached 快取驅動完整配置指南:從安裝到生產環境最佳實踐

     編輯:PHP 綜合知識

為什麼選擇 Memcached?

大型網站必備組件:降低資料庫負載、提升響應速度、支援分佈式叢集。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 內建已啟動,無需額外安裝

Laravel 配置 (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_',

.env 環境變數

CACHE_DRIVER=memcached

基礎操作 API (統一介面)

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();  // 批次清理

進階:Session 同樣使用 Memcached

// config/session.php
'driver' => env('SESSION_DRIVER', 'memcached'),
'connection' => 'default',  // 對應 cache.php 中的 memcached 設定

生產環境最佳實踐

  1. 多台 Memcached 叢集:權重分發、單點故障不影響整體
  2. 監控關鍵指標:命中率 > 90%、記憶體使用率 < 80%、驅逐率趨勢
  3. 連線池複用:PHP-FPM 持久連線 memcached.sess_persistent=1
  4. 鍵命名規範:prefix:module:type:id,避免衝突、便於管理
  5. 適當 TTL:熱門資料長 TTL、冷門資料短 TTL、頻繁變動資料用標籤主動清理
  6. 序列化優化:安裝 igbinary 擴展,`ini_set('memcached.serializer', 'igbinary')`

常見問題排查

現象可能原因解決
連線失敗防火牆/安全組阻擋 11211 埠開放埠、檢查 bind IP
資料不一致多台伺服器時間不同步啟用 NTP 時間同步
記憶體不足驅逐TTL 過長、無淘汰策略調整 TTL、增加記憶體、啟用 LRU
Session 丟失Memcached 重啟、驅逐Session 關鍵資料備份資料庫

總結

Laravel Memcached 驅動配置簡單、介面統一、效能卓越。掌握「配置 → 使用 → 監優 → 維運」全鏈路,讓快取真正成為系統效能的加速器而非隱患來源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved