本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
无服务器版 Watch 入门
ElastiCache 支持该WATCH命令,该命令允许您监视密钥的更改并执行条件事务WATCH命令对于需要乐观并发控制的应用程序特别有用,可确保只有在未修改监控密钥的情况下才会执行事务。这包括客户端所做的修改(例如写入命令)和 Valkey 本身所做的修改,例如到期或驱逐。如果从设置密钥之时起到收到密钥时EXEC已对其进行了修改,则整个事务都将中止。WATCH
对于 ElastiCache 无服务器,引入了以下限制-
ElastiCache 无服务器的作用域WATCH仅限于单个哈希槽。这意味着只有映射到同一个哈希槽的密钥才能通过同一个连接同时被监视,而跟随监视命令的交易只能在同一个哈希槽上运行。当应用程序尝试监视来自不同哈希槽的密钥,或者执行对映射到与监视密钥不同的哈希槽的密钥进行操作的交易命令时,将返回CROSSSLOT错误。哈希标签
此外,无法在带有监视键的连接内执行SCAN命令,并且会返回command not supported during watch state错误。
当 ElastiCache Serverless 不确定密钥是否被修改时,交易将被中止(就像触摸了监视的密钥一样)。例如,当一个插槽已迁移并且在同一个节点上找不到被监视的密钥时。
代码示例
在以下示例中,监视的密钥和SET命令中指定的密钥映射到不同的哈希槽。执行会返回 a 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