キャッシュ

luagate/cache-introキャッシュ入門22クラウド・インフラ

上から下へ、全 22 枚そのまま並べています。

発表モードで開く

キャッシュ入門

キャッシュ

よく使うものを手元に 〜2回目を速くするしくみ〜

1
1

目次

今日の流れ

1. キャッシュとは何か

2. なぜ速くなるのか

3. キャッシュの階層と身近な例

4. ヒット・ミスと有効期限

5. まとめと振り返り

2
2
キャッシュ入門 - イントロ

今日のゴール

この時間で身につけてほしいことです。

  • キャッシュが「手元に置いて速くする」しくみだと分かる
  • なぜ速くなるかを再計算・再取得の省略で説明できる
  • 身近なブラウザキャッシュの例をイメージできる
  • ヒットとミス、有効期限(TTL)が分かる
  • 古い情報が残る落とし穴に気づける
10
3
キャッシュ入門 - イントロ

キャッシュ とは

一度手に入れた結果を、近くに置いて再利用するしくみです。

キャッシュ(Cache)

よく使うデータや計算結果を、取り出しやすい近い場所に一時的に保存しておく仕組み。同じものが必要になったとき、元をたどらず手元から素早く返せる。

一度使った結果を近くに保存する

次回は元をたどらず手元から返す

再計算や再取得の手間を省ける

机の引き出しによく使う道具を入れる感覚

11
4
キャッシュ入門 - イントロ

キャッシュのたとえ

遠くまで取りに行く代わりに、手元に置いておく、という考え方です。

手元に置く
  • よく使うものを近くへ
  • 取りに行く時間を省く
2回目が速い
  • 初回は元から取得
  • 次回は手元から即返す
容量は有限
  • 全部は置けない
  • よく使うものを優先
12
5

キャッシュ入門 - しくみ

2

第2部 なぜ速くなるのか

再計算と再取得を省くしくみ

20
6
キャッシュ入門 - しくみ

キャッシュなし と キャッシュあり

同じデータを何度も使うとき、毎回取りに行くか、手元から返すかで速さが変わります。

キャッシュなし

  • 毎回もとから取得し直す
  • 毎回ゼロから計算し直す
  • 通信や処理に時間がかかる
  • 元の負荷も大きくなる

キャッシュあり

  • 2回目以降は手元から返す
  • 計算結果を使い回せる
  • 待ち時間が大きく減る
  • 元への負荷も軽くなる
21
7
キャッシュ入門 - しくみ

速くなる2つの理由

キャッシュが速い理由は、大きく分けて2つの省略にあります。

再取得の省略
  • 遠くから運ぶのをやめる
  • 近くから受け取る
再計算の省略
  • 重い処理をやり直さない
  • 出した答えを覚えておく
元の負荷も軽減
  • 問い合わせ自体が減る
  • 元のサーバーが楽になる
22
8
キャッシュ入門 - しくみ

システムの中のキャッシュ

利用者と元のデータの間にキャッシュを置くと、多くの要求を手前で返せます。

  • 利用者からの要求がまずキャッシュに届く
  • あれば手元からすぐ返す(ヒット)
  • なければ元に取りに行く(ミス)
  • 取得した結果はキャッシュに保存する
  • 次回からは手前で返せるので速い
23
9
キャッシュ入門 - しくみ

ブラウザキャッシュの動き

一度開いたページの画像などを手元に保存し、次回の表示を速くします。

1. 初回アクセス

画像やCSSをサーバーから取得する

2. 手元に保存

取得したファイルを端末に保存する

3. 再アクセス

保存済みなら手元のものを使う

4. 表示が速い

通信が減り、ページがすぐ開く

24
10

キャッシュ入門 - 階層

3

第3部 階層と例

いろいろな場所にあるキャッシュ

30
11
キャッシュ入門 - 階層

キャッシュの階層

キャッシュはいろいろな場所にあります。元に近いほど大きく、利用者に近いほど速い傾向です。

置き場所
役割の例

CPUキャッシュ

CPUのすぐ近く

直前に使ったデータを保持

メモリ

アプリの作業領域

計算結果を一時保存

ブラウザ

利用者の端末

画像やCSSを保存

DBクエリ

サーバー側

重い検索結果を再利用

31
12
キャッシュ入門 - 階層

ヒットとミス

探したものがキャッシュにあるかどうかで、呼び方と速さが変わります。

キャッシュヒット / キャッシュミス

必要なデータがキャッシュにあって手元から返せる状態をヒット、なくて元から取り直す状態をミスと呼ぶ。ヒット率が高いほど全体は速くなる。

ヒットは手元にあって即返せる

ミスは元に取りに行く必要がある

ヒット率が高いほど効果が大きい

何をどれだけ置くかが設計の腕の見せ所

32
13
キャッシュ入門 - 階層

取得時間のイメージ(ヒット時とミス時)

手元にあれば一瞬、なければ元まで取りに行くぶん時間がかかります。あくまでイメージです。

200 相対的な所要時間16012080400
1相対的な所要時間
10相対的な所要時間
80相対的な所要時間
200相対的な所要時間
CPUキャッシュ命中
メモリから取得
DBから取得
遠くのサーバーから

出典: 取得時間の傾向を示す概念図(概算)

33
14

キャッシュ入門 - 落とし穴

4

第4部 有効期限と落とし穴

古い情報とどう付き合うか

40
15
キャッシュ入門 - 落とし穴

有効期限(TTL)

キャッシュをいつまで使ってよいかを決める「賞味期限」のしくみです。

TTL(Time To Live)

キャッシュした内容を有効とみなす期間。期限内は手元のものを使い、期限が切れたら元から取り直して新しくする。

期限内は手元のものをそのまま使う

期限が切れたら元から取り直す

短くすると新鮮だがヒット率は下がる

長くすると速いが古さが残りやすい

41
16
キャッシュ入門 - 落とし穴

キャッシュの落とし穴

速さと引き換えに、古い情報が残るという難しさがあります。

古い情報が残る
  • 元が更新されても気づけない
  • 利用者に古い内容を返す
消し時が難しい
  • いつ捨てるか判断が要る
  • 捨てすぎると速さが消える
場所が多くて複雑
  • 各階層に古いものが残る
  • どこを消すか見極めが要る
42
17
キャッシュ入門 - 落とし穴

キャッシュ無効化はなぜ難しいか

「いつ、どこのキャッシュを捨てるか」を正しく決めるのは、思いのほか難しい問題です。

  • 更新した瞬間に全階層へ反映するのは難しい
  • 早く捨てすぎると速さの効果が失われる
  • 遅すぎると古い内容が利用者に届く
  • 複数の場所に同じものが散らばっている
  • だからこそ有効期限や更新の合図を慎重に設計する
43
18
キャッシュ入門 - まとめ
クイズ

振り返りクイズ

今日の内容を確認しましょう。

キャッシュが処理を速くする主な理由として最も適切なものはどれ?

A
通信を暗号化するから
B
再取得や再計算を省けるから
C
データを完全に消すから
D
CPUの個数を増やすから
50
19
キャッシュ入門 - まとめ
答え

振り返りクイズ 解答

キャッシュが処理を速くする主な理由として最も適切なものはどれ?

A
通信を暗号化するから
B
再取得や再計算を省けるから
C
データを完全に消すから
D
CPUの個数を増やすから

キャッシュは一度得た結果を手元に保存し、再取得や再計算を省くことで2回目以降を速くします。暗号化やCPU増設とは別の役割です。

51
20
キャッシュ入門 - まとめ

質疑・次回予告

今日のまとめと、次に学ぶテーマです。質問があればここで受け付けます。

今日のおさらい
  • キャッシュは手元に置いて2回目を速くする
  • 再取得・再計算を省くから速い
  • TTLと古さの管理が腕の見せどころ
次回予告
  • CDN 〜世界中に置いた配達拠点〜
  • 利用者の近くから配信するしくみ
52
21
"

キャッシュは「よく使うものを手元に置く」工夫。2回目以降をぐっと速くしてくれる一方、古い情報をどう新しく保つかが、いちばんの腕の見せどころです。

キャッシュ入門

53
22