LuaスクリプトはRedisサーバー全体をどのようにブロックしますか?[複製]

Dec 25 2020

Redisインスタンスを実行していて、2つのクライアントAとBが接続されているとします。JavaのRedisテンプレートを使用して、一方から読み取り専用操作LUAスクリプトを実行し、もう一方から読み取り専用ハッシュ操作を実行します。Redisのすべての操作がブロックされているため、LUAスクリプトが最初に発行された場合、他のクライアントはLuaスクリプト操作が終了するまで待機する必要があると思います。同様に、ハッシュ操作が最初に発行された場合、Luaスクリプト操作はハッシュ操作が終了するまで待機する必要があります。これは有効なステートメントですか?シングルスレッドの場合、Redisは複数のソースからの呼び出しをどのように処理しますか?

回答

GuyKorland Dec 27 2020 at 02:29

Redisには、メインスレッドで毎回単一のイベントを実行する内部Even Loopがあります。詳細については、以下を参照してください。

  1. https://redis.io/topics/internals-rediseventlib
  2. http://nosqlgeek.blogspot.com/2019/10/so-what-exactly-is-event-loop.html