Serverless での Watch の開始方法 - Amazon ElastiCache

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Serverless での Watch の開始方法

ElastiCache は WATCH コマンドをサポートしています。これにより、キーの変更をモニタリングし、条件付きトランザクションを実行できます。WATCH コマンドは、オプティミスティック同時実行制御を必要とするアプリケーションに特に役立ち、モニタリング対象のキーが変更されていない場合にのみトランザクションが実行されます。これには、書き込みコマンドなどのクライアントによる変更や、有効期限や削除などの Valkey 自体による変更が含まれます。キーが に設定WATCHされてからEXEC受信されるまでに変更された場合、トランザクション全体が中止されます。

ElastiCache Serverless では、次の制約が導入されています。

ElastiCache Serverless WATCHは 1 つのハッシュスロットにスコープされます。つまり、同じハッシュスロットにマッピングされたキーのみが、同じ接続によって同時に監視でき、監視コマンドに従うトランザクションは、同じハッシュスロットでのみ動作できます。アプリケーションが別のハッシュスロットからのキーを監視しようとしたり、監視対象のキーとは異なるハッシュスロットにマッピングされたキーで動作するトランザクションコマンドを実行しようとすると、CROSSSLOTエラーが返されます。ハッシュタグを使用して、複数のキーが同じハッシュスロットにマッピングされるようにできます。

さらに、監視対象のキーを使用した接続内でSCANコマンドを実行できず、command not supported during watch stateエラーが返されます。

ElastiCache Serverless がキーが変更されたかどうかが不明な場合、トランザクションは (監視されたキーがタッチされたかのように) 中止されます。たとえば、スロットが移行され、監視対象のキーが同じノードで見つからない場合です。

コードの例

次の例では、監視対象キーとSETコマンドで指定されたキーが異なるハッシュスロットにマッピングされます。実行は を返しますCROSSSLOT ERROR

> WATCH foo:{005119} OK > MULTI OK > SET bar:{011794} 1234 QUEUED > EXEC CROSSSLOT Keys in request don't hash to the same slot

次の例は、 のキーセットWATCHが変更されていないため、トランザクションが成功したことを示しています。

> WATCH foo:{005119} OK > MULTI OK > SET bar:{005119} 1234 QUEUED > EXEC 1) OK

次の例では、同じクライアント接続内で異なるスロットから同時にWATCHキーを取得しようとすると、 が返されますCROSSSLOT ERROR

> WATCH foo:{005119} OK > WATCH bar:{123455} CROSSSLOT Keys in request don't hash to the same slot

監視制限

クライアント接続ごとに最大 1000 個のキーを同時に監視できます。

Watch に関連するサポートされているコマンド

WATCH コマンドと UNWATCH コマンドは、Valkey.io ウェブサイトに記載されています。構文、動作、戻り値、潜在的なエラー条件など、コマンドの包括的な概要を提供します。