redis的multi_exec结构与独立事件之间的效率对比


$redis->set($key , "1");
$redis->get(key);
$redis->set($i , "hello,world");
$redis->set($i + 1, "hello,world");
$redis->set($i + 2, "hello,world");
$redis->set($i + 3, "hello,world");


$redis->->multi()->set($key , "1")
->get($key)
->set($i , "hello,world")
->set($i + 1, "hello,world")
->set($i + 2, "hello,world")
->set($i + 3, "hello,world")
->exec();

上面两种测试用例是可以达到相同目的的,都可以通过redis进行一些set,get操作,但是内部实现不同,第二种通过pipeline信道的方式传递信息,减少了命令连接传输的消耗,所以相对的效率高一些,具体效率高出来多少,测试一下。

重复执行100的结果是 第一种548ms,第二种是419ms,大约高出20%的样子。

重复执行10000的结果是 第一种54743ms,第二种是41221ms,依旧大约高出20%的样子。

从上述的测试可以看到多个连续的redis请求的时候,可以通过multi_exec的方式来提高效率,每个命令的返回值会以数组的形式返回,每个命令在multi_exec结构中第几个位置,数组对应的下标就是几。

Leave a comment

Your email address will not be published.

*