管道和事务

了解如何使用 Redis 管道和事务

Redis 允许您将一系列命令一起批量发送到服务器。 您可以使用两种类型的批处理:

  • 管道通过发送多个命令来避免网络和处理开销 发送到服务器。然后服务器发回 包含所有响应的单一通信。有关更多信息,请参阅 Pipelining 页面 信息。
  • 事务保证所有包含的命令都将执行 完成,而不会被来自其他客户端的命令打断。 有关更多信息,请参阅 Transactions (交易) 页面。

执行管道

要在管道中执行命令,首先要创建一个管道对象 然后使用类似于 Standard 的方法向其添加命令 命令方法(例如Set()Get()).命令包括 buffered 的 API 中,并且仅在您调用Exec()method 的 intent 方法。

与 pipeline 命令的主要区别在于它们的返回 值仅在管道完成执行后才包含有效结果。 您可以使用Val()method 而不是Result()(请注意,错误由Exec()method 而不是 than 通过各个命令)。

您还可以使用Pipelined()方法。 这将在回调函数中执行管道命令,您 provide 并调用Exec()在它返回后自动返回:

执行事务

事务的工作方式与管道类似。创建一个 transaction 对象替换为TxPipeline()method, call command methods 在该对象上,然后调用 Transaction 对象的Exec()方法来执行它。您可以访问结果 from 命令,在事务完成后使用Val()方法。

还有一个TxPipelined()方法,该方法以类似的方式工作 自Pipelined()上述:

监视键是否有更改

Redis 支持乐观锁定以避免不一致的更新 到不同的键。基本思想是监视对任何 您在处理 更新。如果监视的密钥发生更改,则必须重新启动更新 替换为 keys 中的最新数据。有关乐观锁定的更多信息,请参阅 事务

下面的代码读取一个字符串 ,它表示PATH变量,然后附加一个新的 命令路径添加到字符串中。如果观看了 key 在写入之前被另一个客户端修改,事务中止。 这Watch()method 接收一个回调函数,您可以在其中执行 命令。在此回调的 body 中,您可以执行 read-only 命令 (称为rdb在我们的示例中)并立即收到结果。启动 事务本身通过调用TxPipeline()TxPipelined()Tx对象传递给回调。Watch()还接收一个或多个string参数,这些参数表示所需的键 观看。

对于生产用途,您通常会在 一个循环重试它,直到成功,否则报告或记录失败:

为本页评分
返回顶部 ↑