Skip to content

TTL の判断 ― 600秒。60秒にしたら?

KeyTerms

用語意味なぜ重要か
TTLTime To Live(キャッシュの有効期限)キャッシュの古さを制御する最重要パラメータ
キャッシュ ヒット率キャッシュ内にデータが存在する確率TTLが短いほど低下し、DBへの負荷が増える
キャッシュ ミスキャッシュが無効化されてデータソースから取得する場合TTLによってミス頻度が決まる
データ鮮度データがリアルタイム情報にどれだけ近いかTTLが長いほど低下する
Cache::remember()存在確認→キャッシュ→保存をワンステップで行うLaravelメソッドLIBOT のキャッシュ実装の基本

Prerequisite

  • キャッシュの基本概念: データソース(API、DB)から取得した結果を一時保存し、再利用することで応答速度を改善する仕組み
  • テーブルの読み方: TTLが短い vs 長い時の各メトリクスの変化を対比できること
  • トレードオフの思考: 2つの相反する要件(速度 vs 鮮度)のバランスを取る必要があることを理解している

Phase 1: 観察

exemplar

php
// LineCouponService.php(キャッシュ部分の概要)
// Label: exemplar

$cacheKey = "line_coupons:{$botId}";
$ttl = config('line_coupon.cache_ttl', 600);  // デフォルト10分

return Cache::remember($cacheKey, $ttl, function () use ($bot) {
    // キャッシュミス → LINE API からクーポン一覧を取得
    return $this->fetchCouponsFromLineApi($bot);
});

Cache::remember() は:

  1. キャッシュにデータがあれば、それを返す(高速)
  2. なければ、クロージャを実行してキャッシュに保存してから返す

Phase 2: 判断

AI禁止ゾーン
  • TTL を 60 秒 にしたら何が変わりますか? 3600 秒(1時間) だったら?
  • TTL 0 秒(キャッシュしない)と TTL 無限、それぞれの問題は?
  • このケースで 600 秒 は適切な値ですか?

AIに聞く前に、自分の頭で考えてみましょう。

テキストを入力すると有効になります