为什么lpop会增加Redis CPU的使用率?

时间:2016-01-31 11:30:17

标签: go redis

我有一个应用程序在调用lpop时保持循环。使用top命令,我可以看到redis使用64%的CPU,而我的应用程序使用101%。

我正在使用redis来创建队列和工作者。我的工作人员处于无限循环中,呼叫lpop并等待下一份工作进入。

为此,我正在使用machinery包。此here存在问题,其中问题来自lpop。但是,由于评论令人困惑,我不知道LPOPBLPOP之间的区别是什么,除了一个不阻止而另一个阻止的事实。

1 个答案:

答案 0 :(得分:4)

  

Using timed BLPOP instead of LPOP to avoid massive cpu usage

     

7天前提交

     

commit 54315dd9fe56a13b8aba2d2a8868fc48dfbb5795

machinery/v1/brokers/redis.go

- itemBytes, err := conn.Do("LPOP", redisBroker.config.DefaultQueue)
+ itemBytes, err := conn.Do("BLPOP", redisBroker.config.DefaultQueue, "1")

使用最新版本的machinery/v1/brokers/redis.goLPOP更改为BLPOP

参考:Redis commands: BLPOP

相关问题