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);
}
?>
相关文章
相关标签/搜索