操作して学ぶ
LRUキャッシュ可視化
Redis・ブラウザ・OSのページ置換・CPUキャッシュ…あらゆる場所で使われるLRU(Least Recently Used)方式。 GETとPUTを打つたびにキーが最近使った側(MRU)へ移動し、 容量を超えると最も使われていない側(LRU)が追い出される様子を動かして確かめてください。
容量
GETは値を変えず追い出しません(入力欄は共通)
LRU(最も使われていない)← → MRU(最近使った)
(空)
GETヒット率: —(0/0)使用中: 0 / 2
なぜハッシュマップだけでは足りないか
- ハッシュマップだけ:キーから値をO(1)で引けるが、「どれが一番使われていないか」の順序は持たない。
- 双方向連結リストを添える:先頭=LRU、末尾=MRUの順序を持ち、アクセスのたびにノードを末尾へO(1)で移動できる。
- この可視化の実装:JSの
Mapは反復順序が挿入順という仕様上の保証があるため、アクセス時にdelete→setで再挿入するだけで同じO(1)の並べ替えが実現できる。