【リードスルーキャッシュ】

Read-Throughキャッシュ とは?

最終更新:
💡 見つからないデータの取得を、キャッシュ側に任せる

読みたいデータがキャッシュにないとき、キャッシュ側のローダーがデータの取得元から読み込み、保存して返す方式。アプリはキャッシュへ読み取りを依頼する。

📌 このページのポイント
Read-Throughの読み取り アプリ キャッシュ 取得元 読む ミス ヒット:保存されたデータを返す ミス:取得元から読み込み、保存して返す 事前投入・期限・更新方法は別に設計
キャッシュにないデータの取得と保存は、キャッシュ側のローダーが担当する。最初の読み取りが必ずミスになるわけではなく、データの鮮度は更新方法や保持期間による。
ひよこ ひよこ
Read-Throughって、何を任せるの?
ペンギン先生 ペンギン先生
読みたいデータがキャッシュにないときの取得を、キャッシュ側へ任せるんだ。アプリが読み取りを頼むと、設定されたローダーがDBやAPIなどから読み込む。この読み取り経路の話で、アプリが一切DBを使わなくなるという意味ではないよ。
ひよこ ひよこ
データがなかったらどうなる?
ペンギン先生 ペンギン先生
キャッシュにない状態をミスと呼ぶよ。取得元にデータがあれば、ローダーが読み込み、キャッシュへ保存してアプリへ返す。取得元にもない場合や読み込みに失敗した場合の扱いは、実装や設定を確認する必要があるんだ。
ひよこ ひよこ
Cache-Asideとはどこが違うの?
ペンギン先生 ペンギン先生
Cache-Asideでは、ミスを受けたアプリが取得元へ読み取りに行き、結果をキャッシュへ入れるよ。Read-Throughでは、その仕事をキャッシュ側のローダーが行う。誰が取得と保存を担当するかが違うんだ。
ひよこ ひよこ
最初のアクセスは必ずDBを読む?
ペンギン先生 ペンギン先生
必ずではないよ。事前にデータを入れたり、別の利用者の読み取りで既に保存されていたりすることもある。逆に一度読んでも、有効期限や削除などでキャッシュから消えれば、また取得元へ読む必要があるね。
ひよこ ひよこ
何度も読むデータなら速くなる?
ペンギン先生 ペンギン先生
保存したデータを再利用できれば、取得元への問い合わせを減らせるよ。ただし効果は再利用の頻度や保持できる量による。ローダーの接続やエラー処理も設計しよう。キャッシュを使えば必ず速くなるという保証ではないんだ。
ひよこ ひよこ
元のデータが更新されたら、いつも最新になる?
ペンギン先生 ペンギン先生
Read-Throughだけでは決まらないよ。キャッシュに残る古い値をいつ捨てるか、更新をどう反映するかは別に考える。読み取りのたびに取得元を読み直す方式ではないので、必要な鮮度に合う更新・有効期限の設計が大切だね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Read-Through」って出てきたら「キャッシュにないデータの取得を、キャッシュ側に任せる読み取り方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Read-Through Cache」 = 読み込みスルーキャッシュ
💬 Readは読む、Throughは通してという意味。読み取りをキャッシュへ依頼し、データがないときはキャッシュ側が取得元から読み込む方式だよ。

参考資料

← 用語集にもどる