# CacheManager

`CacheManager` クラスは、キャッシュの読み書き、キー生成、および並行実行制御（Thundering Herd対策）を担当するコンポーネントです。`Spot` の内部で利用され、DBやストレージなどの様々なバックエンドを統合して管理します。

::: beautyspot.cache

## 主な役割

1. **キャッシュキー生成**: 関数名、入力引数、バージョンなどから一意のハッシュ（キー）を生成します。
2. **データの読み書き**: `TaskDBBase` (メタデータ) と `BlobStorageBase` (実データ) を操作し、データの保存先をポリシー（`StoragePolicyProtocol`）に基づいて決定します。
3. **Thundering Herd 対策**: 同一のキャッシュキーに対する複数の並行リクエストが同時に実行されることを防ぎます。最初の1つだけが関数を実行し、他のリクエストはその完了を待機して結果を共有します。これにより、キャッシュミス時のシステムへの過負荷を防ぎます。
