阅读量:0
在 PHP 中,使用 Redis 事务可以通过 MULTI
、EXEC
、WATCH
和 UNWATCH
命令来实现。下面是一个简单的示例:
<?php // 创建 Redis 实例 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); // 开始 Redis 事务 $redis->multi(); try { // 执行 Redis 命令 $redis->set('key1', 'value1'); $redis->set('key2', 'value2'); $redis->set('key3', 'value3'); // 提交 Redis 事务 $result = $redis->exec(); // 检查事务是否成功执行 if ($result === false) { echo "Redis transaction failed."; } else { echo "Redis transaction succeeded."; } } catch (Exception $e) { echo "Error: " . $e->getMessage(); } // 如果需要监视某个 key,在事务开始前使用 WATCH 命令 $redis->watch('key1'); try { // 再次执行 Redis 事务 $redis->multi(); $redis->set('key1', 'new_value1'); $redis->set('key2', 'new_value2'); $redis->set('key3', 'new_value3'); $result = $redis->exec(); if ($result === false) { // 如果被监视的 key 在事务执行期间发生了变化,事务将失败 echo "Redis transaction failed due to change in watched key."; } else { echo "Redis transaction succeeded."; } } catch (Exception $e) { echo "Error: " . $e->getMessage(); } finally { // 无论成功还是失败,都要取消监视 $redis->unwatch(); } ?>
在这个示例中,我们首先创建了一个 Redis 实例并连接到本地 Redis 服务器。然后我们使用 multi()
方法开始一个 Redis 事务,并在事务中执行一系列 Redis 命令。接下来,我们使用 exec()
方法提交事务。如果事务成功执行,exec()
将返回 true
,否则返回 false
。
我们还演示了如何使用 WATCH
和 UNWATCH
命令来监视特定的 key。如果在事务执行期间被监视的 key 发生了变化,事务将失败。