仕事中の問題と解決メモ。

最近はPythonとGoogle Cloud Platformがメイン。株式会社ビズオーシャンで企画と開発運用、データ活用とか。 http://mstdn.bizocean.co.jp/@uyamazak https://github.com/uyamazak/

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

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


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

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

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

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

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