GAミント至上主義

Web Monomaniacal Developer.

redisで最初の一回だけlpushが失敗した問題の解決方法

redisを使い、複数のlpushを行う時、なぜか最初のlpushが失敗する問題に当たった。


lpushの結果は、1が返ってくるのに、その直後にllenをすると0が返ってくるので、訳が分からずしばらくハマった。

原因は、他のところで行っていたbrpopのブロックが残っていたっぽい。

brpopのtimeoutに0を指定してみたけど、変わらない。

最初のpushでブロックが外れるようなので(でも書き込みはできてない)、しかたなく最初に空文字をpushすることで解決した。

もちろんbrpop側では、空文字が入っていた場合スルーする処理が必要