redis事物的使用

jopen 9年前發布 | 13K 次閱讀 Redis NoSQL數據庫

redis的幾個事物命令:

WATCH 監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷;
UNWATCH 取消 WATCH 命令對所有 key 的監視;
MULTI 標記一個事務塊的開始,指事務塊內的多條命令會按照先后順序被放進一個隊列當中,最后由EXEC命令原子性(atomic)地執行;
DISCARD 取消事務,放棄執行事務塊內的所有命令;
EXEC 執行所有事務塊內的命令;

phpredis的實現方式:

事務的調用有兩種模式Redis::MULTI和Redis::PIPELINE,默認是Redis::MULTI模式,Redis::PIPELINE管道模式速度更快,但沒有任何保證原子性有可能造成數據的丟失。

代碼示例:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$startTime = microtimeFloat();

$pipe = $redis->multi(Redis::PIPELINE);
for($i = 0; $i < 100000; $i++){
    $pipe->set("key::$i", time());
    $pipe->get("key::$i");
}
$pipe->exec();

//$redis->flushDB();
$endTime = microtimeFloat();
$runTime = $endTime - $startTime;
echo "用時 $runTime 秒";

function microtimeFloat(){
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
?>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!