PHP 專案中做數據緩存,主流方案不外乎三類。本文深度解析各自原理、適用場景與避坑指南,助你精準選型。
serialize/json_encode/var_export)寫入磁碟文件(通常置於 runtime/cache/)。mtime,若 time() - mtime > $ttl 則視為過期,重新生成。| 優點 | 缺點 |
|---|---|
| 無額外組件、部署簡單、適合小流量、靜態化頁面 | 磁碟 I/O 瓶頸、高併發下 lock 競爭劇烈、難以做分佈式、清理過期文件麻煩 |
memcached 擴展(非舊 memcache)操作,支援一致性哈希分叢集。| 優點 | 缺點 |
|---|---|
| 極速(微秒級)、水平擴展簡單、自動過期淘汰 | 斷電數據全無、不支援持久化、Value 上限 1MB、無原生備份/遷移工具 |
Session 共享、熱點頁面片段緩存、計數器、Token 存儲 —— 允許丟失、讀寫極頻、TTL 短(通常 ≤ 1h)。
EXPIRE、TTL、SCAN 等精細控制。// composer require predis/predis
$redis = new Predis\Client(['host' => '127.0.0.1', 'port' => 6379]);
$redis->setex('user:1001:profile', 3600, json_encode($userData));
$user = json_decode($redis->get('user:1001:profile'), true);
避坑提醒:切勿將「不能丟失」的業務數據僅存緩存層,緩存永遠是輔助,主庫才是真理。