キャッシュ
同じ問いを二度聞かない
席の予約サービスでは、同じ公演の空席が何度も読まれます。
1人が予約するまでに4回見るなら、同じ答えを4回作っていることになります。
一度作った答えを手元に置いておき、2回目からはそれを返すのがキャッシュです。
Python
# 1回目 → 保存先へ聞く
# 2回目以降 → 手元の答えを返す返します。キャッシュは必ず古くなります。
どれくらい古くてよいかを決めるのが設計です。空席の表示が3秒古くても誰も困りませんが、予約の確定で古い数を使うと二重予約になります。
読む場面ごとに、許せる古さは違います。
ヒット率で効き目を測る
キャッシュが効いているかは、手元で答えられた割合で見ます。これがヒット率です。
3回読んで1回だけ保存先へ行ったなら、ヒット率は約67パーセントです。
100パーセントは、保存先に一度も聞いていないということです。
その状態でデータが変わっても、誰も気づけません。ヒット率は高いほど速く、高いほど古くなります。どこで止めるかが判断です。
演習
読みたい鍵の並びと保存先を受け取り、キャッシュ付きで読んでヒット率まで出します。
要件
- キャッシュに無い鍵は source.get(key) で読み、その値をキャッシュへ入れて misses を1増やす。保存先にも無ければ None のまま覚える
- キャッシュにある鍵は source を見ずに返し、hits を1増やす
- hit_rate は hits × 100 ÷ 読んだ件数を四捨五入した整数。1件も読まなければ 0
ヒント
編集 ゆめさく編集部