Redis删除性能

时间:2014-04-23 13:21:34

标签: php performance redis

我在Redis上有一个队列 - 每天大约有1亿个插页。 Redis插入行很好 - 快速有效地工作。

但是当我尝试删除行时 - 是问题!

我的PHP代码部分:

$limit = 100000;

for ($ i = 1; $ i <= $ limit; $ i++) {

$ line = $ redis-> lPop ('my_list');

}

它的作品,但删除非常非常慢。 100K记录= 100s。

如何加快这个过程?

2 个答案:

答案 0 :(得分:0)

该代码片段的第一个问题是它循环并独立发送每个LPOP。尝试使用流水线技术,我相信你会看到性能的明显提升。

然而,对您的问题更好的解决方案是使用Redis'LREM命令,基本上可以执行您想要的操作:)

答案 1 :(得分:0)

如果不关心交易,你可以试试MULTI PIPELINE。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$pipe = $redis->multi(Redis::PIPELINE);
for($i = 0; $i < 100000; $i++){
    $pipe->lPop("key");

}
$pipe->exec();