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