読者です 読者をやめる 読者になる 読者になる

uyamazakのブログ

仕事中の問題と解決メモ。PythonとGoogle Cloudがメイン。bizoceanで新規事業の企画と開発担当。 BigQueryを使ったビッグデータ収集・解析・リアルタイム処理プロジェクト進行中 https://github.com/uyamazak/oceanus

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

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


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

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

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

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

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