在 Web 應用開發中,緩存是提升系統效能、降低資料庫壓力的關鍵手段。本文分享一種基於 PHP 與 Redis 的簡單且實用的緩存實作方案,適合對即時性要求不高的列表頁、詳情頁等場景。
該方案的核心邏輯非常直觀:以請求的 URL 為基礎生成唯一鍵值,作為 Redis 的 Key 進行存取判斷。
根據請求類型不同,緩存內容分為兩類:
適用場景: 文章列表、商品列表、排行榜、首頁推薦位等「讀多寫少、容忍秒級延遲」的業務。對於交易下單、庫存扣減等強一致性場景,請勿使用此策略。
app:cache:)防止鍵衝突;對超長 URL 可使用 MD5/SHA1 縮短 Key 長度。<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$cacheKey = 'app:cache:' . md5($_SERVER['REQUEST_URI']);
$cachedData = $redis->get($cacheKey);
if ($cachedData !== false) {
// 緩存命中,直接輸出
echo $cachedData;
exit;
}
// 緩存未命中,執行業務邏輯
$data = fetchDataFromDB(); // 查詢資料庫
$html = renderView($data); // 渲染模板
// 存入 Redis,設定 60-90 秒隨機過期
$redis->setex($cacheKey, 60 + rand(0, 30), $html);
echo $html;
?>
「以 URL 為 Key 的 Redis 緩存法」雖簡單,卻直擊效能痛點,是中小型專案快速引入緩存的不二之選。隨著業務增長,可平滑演進至「多級緩存(本地+分佈式)」、「緩存預熱」、「標籤式失效」等進階架構。記住:緩存是把雙刃劍,設計時務必將「一致性」「穿透」「雪崩」「擊穿」四大風險納入考量。