redis事物的使用

redis的幾個事物命令:php

WATCH 監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷;
UNWATCH 取消 WATCH 命令對全部 key 的監視;
MULTI 標記一個事務塊的開始,指事務塊內的多條命令會按照前後順序被放進一個隊列當中,最後由EXEC命令原子性(atomic)地執行;
DISCARD 取消事務,放棄執行事務塊內的全部命令;
EXEC 執行全部事務塊內的命令;web

phpredis的實現方式:redis

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

代碼示例:spa

<?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);
}
?>
相關文章
相關標籤/搜索