本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Serverless 中的 Watch 入門
ElastiCache 支援 WATCH命令,可讓您監控金鑰的變更並執行條件式交易WATCH 命令對於需要樂觀並行控制的應用程式特別有用,可確保只有在監控的金鑰尚未修改時才執行交易。這包括由用戶端進行的修改,例如寫入命令,以及由 Valkey 本身進行的修改,例如過期或移出。如果金鑰是從在 中設定的時間WATCH和EXEC收到的時間修改,則整個交易將會中止。
對於 ElastiCache Serverless,引入了以下限制條件 -
ElastiCache Serverless 的範圍WATCH為單一雜湊插槽。這表示只有映射到相同雜湊插槽的金鑰才能透過相同連線同時監看,而監看命令之後的交易只能在相同的雜湊插槽上操作。當應用程式嘗試監看來自不同雜湊槽的金鑰,或執行在對應至與監看金鑰不同雜湊槽的金鑰上操作的交易命令時,將會傳回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