> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/advanced-blocks/cache-set.md).

# キャッシュ設定

画像の動画識別子を名前空間として使用し、ワークフローステップ間でのデータ共有、中間結果のキャッシュ、同じワークフロー実行コンテキスト内での冗長な計算の回避を可能にしつつ、キーを指定して値をメモリ内キャッシュに保存します。

## このブロックの仕組み

このブロックは、後で Cache Get ブロックを使用して取得できるメモリ内キャッシュに値を保存します。このブロックは次のことを行います:

1. 保存する画像、キャッシュキー、値を受け取ります:
   * キャッシュ名前空間を決定するための入力画像を受け取ります
   * キャッシュエントリを識別するキャッシュキー（文字列）を受け取ります
   * キャッシュに保存する値（任意のデータ型）を受け取ります
2. キャッシュ名前空間を決定します:
   * 画像の動画メタデータから動画識別子を抽出します
   * 動画識別子をキャッシュ名前空間として使用します（動画/ストリームごとにキャッシュエントリを分離します）
   * 動画識別子がない場合は「default」名前空間にフォールバックします
3. キャッシュに値を保存します:
   * 決定された名前空間のメモリ内キャッシュ辞書にアクセスします
   * 指定されたキーを使用してキャッシュに値を保存します
   * 同じキーを持つ既存の値があれば上書きします（キャッシュキーは名前空間内で一意です）
4. 保存された値を返します:
   * 保存された値をパススルーとして出力します（保存されたのと同じ値）
   * この出力は後続のワークフローステップで使用できます

キャッシュは動画識別子ごとに名前空間分けされるため、異なる動画やストリームは別々のキャッシュストレージを持ちます。これにより、複数の動画を処理するワークフローで、各動画ごとに পৃথ立したキャッシュを維持できます。キャッシュはメモリに保存され、ワークフロー実行が完了したとき、またはブロックが破棄されたときに消去されます。Cache Set は Cache Get と組み合わせて使用する必要があります。値は Cache Set で保存し、同じキーと名前空間（同じ動画識別子によって決定される）を使って Cache Get で取得します。

## 一般的な使用例

* **ステップ間の共有状態**: あるワークフローステップで中間結果を保存し、別のステップで取得します（例: 検出結果を後で分析するために保存する、分類予測をフィルタリング用にキャッシュする、後続ブロック用にメタデータを保存する）。これにより、状態共有ワークフローを実現します
* **冗長な計算の回避**: 高コストな計算結果をキャッシュして、複数のワークフローステップで再利用します（例: モデル予測をキャッシュする、処理済み画像を保存する、変換結果を保存する）。これにより、計算キャッシュワークフローを実現します
* **動画フレームのコンテキスト**: フレーム固有のデータを保存して、動画フレームをまたいでコンテキストを維持します（例: 前のフレームの検出結果をキャッシュする、フレームシーケンスのメタデータを保存する、トラッキング状態を保存する）。これにより、フレームコンテキストワークフローを実現します
* **条件付きワークフローのロジック**: 後続ステップでのワークフロー実行を制御する判断結果やフラグを保存します（例: フィルタリング判断をキャッシュする、検証結果を保存する、ワークフロー状態を保存する）。これにより、条件付き実行ワークフローを実現します
* **データ集約**: キャッシュに値を保存することで、ワークフローのステップ間でデータを累積します（例: 検出数を保存する、統計をキャッシュする、結果コレクションを保存する）。これにより、データ集約ワークフローを実現します
* **一時ストレージ**: ワークフローグラフを通さずに複数のワークフローステップからアクセスする必要がある値の一時保存としてキャッシュを使用します（例: ステップ間データを保存する、一時状態を維持する、非線形ワークフローデータを共有する）。これにより、一時ストレージワークフローが可能になります

## 他のブロックへの接続

このブロックは、値をキャッシュに保存し、保存した値をそのまま通過させます:

* **Cache Get ブロックの前** 後で取得するための値を保存します（例: 検出結果を取得用に保存する、後で使う予測をキャッシュする、アクセス用にメタデータを保存する）。これにより、キャッシュ保存ワークフローを実現します
* **モデルまたは処理ブロックの後** その出力を後で使えるようにキャッシュします（例: モデル予測をキャッシュする、処理結果を保存する、計算出力を保存する）。これにより、結果キャッシュワークフローを実現します
* **ワークフローブランチ内で** 並列または条件付きの実行経路からアクセスできる共有値を保存します（例: 共有状態を保存する、共通結果をキャッシュする、分岐データを保存する）。これにより、分岐調整ワークフローを実現します
* **キャッシュデータを必要とするブロックの前で** 後続ブロックで使用される値を保存します（例: 後で処理するための入力を保存する、フィルタリング用データをキャッシュする、分析用の値を保存する）。これにより、キャッシュデータワークフローを実現します
* **条件付きロジックのワークフロー内で** 後で使うためのフラグや判断結果を保存します（例: 検証結果を保存する、判断フラグをキャッシュする、条件付き状態を保存する）。これにより、条件ロジックワークフローを実現します
* **動画処理ワークフローで** フレーム固有または動画固有のキャッシュ名前空間を維持します（例: フレームコンテキストを保存する、動画固有データをキャッシュする、ストリーム固有の値を保存する）。これにより、動画コンテキストワークフローを実現します

## 要件

このブロックには、入力画像（動画識別子を通じてキャッシュ名前空間を決定するために使用）、キャッシュエントリを識別するキャッシュキー（文字列）、および保存する値（任意のデータ型）が必要です。このブロックは LOCAL 実行モードでのみ動作します。ほかの実行モードで使用すると NotImplementedError が発生します。キャッシュに保存された値は、同じキーと名前空間（同じ動画識別子）を使って Cache Get ブロックで後から取得できます。キャッシュはメモリに保存され、ワークフローの実行が完了すると自動的に消去されます。キャッシュは動画識別子ごとに名前空間分けされるため、異なる動画は別々のキャッシュストレージを持ちます。すでに同じキーがキャッシュ内に存在する場合、新しい値を同じキーで保存すると以前の値が上書きされます。保存できる値のデータ型は任意です（文字列、数値、リスト、検出結果、画像など）。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/cache_set@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前** | **型** | **説明**                                                                                                                                                                                                                                                   | 参照 |
| ------ | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name` | `str` | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                  | ❌  |
| `キー`   | `str` | 保存される値のキャッシュエントリを識別するキャッシュキー（文字列）。このキーは、Cache Get ブロックで値を取得する際に同じ値で使用する必要があります。キーは大文字小文字を区別し、完全一致でなければなりません。すでに同じキーがキャッシュ内に存在する場合、新しい値を保存すると以前の値が上書きされます。異なるキャッシュ値を識別するために、説明的なキーを使用してください（例: 'detections'、'classification\_result'、'frame\_metadata'）.. | ✅  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### ランタイム互換性

`ハード` - 実行 `リモート` : キャッシュブロックは LOCAL ワークフローステップ実行のみをサポートします。リモートステップ実行では NotImplementedError が発生します。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `キャッシュ設定` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)): キャッシュ名前空間を決定するために使用される入力画像。ブロックは画像の動画メタデータから動画識別子を抽出し、それをキャッシュ名前空間として使用します。動画識別子が存在しない場合、ブロックは名前空間として 'default' を使用します。名前空間はキャッシュエントリを分離し、異なる動画やストリームが別々のキャッシュ保存領域を持つようにします。同じキャッシュ名前空間にアクセスするには、Cache Set ブロックと Cache Get ブロックの両方で同じ画像（同じ動画識別子を持つ）を使用してください..
  * `キー` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md))：保存される値のキャッシュエントリを識別するキャッシュキー（文字列）。このキーは、Cache Get ブロックで値を取得する際に同じ値で使用する必要があります。キーは大文字小文字を区別し、完全一致でなければなりません。すでに同じキーがキャッシュ内に存在する場合、新しい値を保存すると以前の値が上書きされます。異なるキャッシュ値を識別するために、説明的なキーを使用してください（例: 'detections'、'classification\_result'、'frame\_metadata'）..
  * `値` (*Union\[*[*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)*,* [*`*`*](/workflows/ja/gaido/developer-guide/kinds/wildcard.md)*]*)：キャッシュに保存する値。文字列、数値、リスト、検出結果、画像、分類、その他あらゆるワークフローデータ型を含む任意のデータ型を指定できます。値はメモリに保存され、同じキーと名前空間を使って後から Cache Get ブロックで取得できます。値はブロックの出力としてもそのまま渡されるため、後続のワークフローステップで使用できます..
* 出力
  * `出力` ([`*`](/workflows/ja/gaido/developer-guide/kinds/wildcard.md))：任意の要素に相当します。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/cache_set@v1",
	    "image": "$inputs.image",
	    "key": "my_cache_key",
	    "value": "any_value"
	}
```

</details>
