PHP使用Redis的事務命令


1.redis事務命令:

命令 作用 返回值
watch 監視一個或多個key 總是OK
multi 聲明事務開始,后續命令將排隊按順序等待exec執行 總是OK
exec 順序執行multi之后的命令,如果multi之前使用watch命令監視的鍵的值發生變化,執行將失敗 執行成功時返回數組包含每個命令執行結果,失敗時原生命令返回null,php-redis擴展方法返回false
discard 取消事務 總是OK
unwatch 取消watch監視,如果watch監視之后執行了exec或discard,會自動取消監視,不必再unwatch 總是OK

2.redis事務示例:
<?php
try {
//連接本地的 Redis 服務
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
} catch (Exception $e){
echo $e->getMessage();
die;
}

$key1 = 'x1';
$key2 = 'x2';

$redis->set($key1, '123');
$redis->set($key2, '234');

try {
//監視一個(或多個)key,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷
$redis->watch(array($key1, $key2));

//模擬監視 key 被打斷
//$redis->set($key1, '12345');

$redis->multi();
$redis->set($key1, '1123');
$redis->set($key2, '2123');
//執行事務塊內的所有命令
$status = $redis->exec();
//失敗則取消事務
if (!$status) {
$redis->discard();
}
} catch (Exception $e){
echo $e->getMessage();
die;
}

var_dump($status);

echo '<br>';

echo $redis->get($key1) . '-' .$redis->get($key2);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM