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); } ?>