> 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>

* 入力
  * `画像` ([*`画像`*](/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\[*[*`*`*](/workflows/ja/gaido/developer-guide/kinds/wildcard.md)*,* [*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.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>
