2017-11-07 2 views
0

リストの長さが指定されたmax_size以下になるまでブロックするBLPUSHコマンドのようなものを探しています。目的は、プロデューサが消費者よりも速く実行されている場合、リストが無限に増加するのを防ぐことです。リストに空きがあるまでブロックを押してください

この機能は、PythonのQueue.put()と非常によく似ています。

this accepted answerが機能しないことに注意してください。なぜなら、(1)コードはすぐに戻り、まったくブロックしないからです。 (2)Luaにスピンロックを書き込むと、Redisがフリーズします。

LuaにBLPUSHを実装する方法はありますか、それともCでなければなりませんか?

答えて

0

TLDRこれはC言語、またはC言語の他の言語で記述する必要があります。

Luaは、ロジックと既存のRedisコマンドを構成する手段です。 Redisは(ほとんど)シングルスレッドなので、Luaランタイムエンジンはスクリプトの実行に十分注意を払い、サーバーをブロックします。

Redis v4以降、モジュールでは、誰でも(必要なスキルを持っている)、blocking operationsを含む(ほとんど)何でもRedisを拡張することができます。

関連する問題