Wie blockieren Lua-Skripte den gesamten Redis-Server? [Duplikat]

Dec 25 2020

Angenommen, ich habe eine Redis-Instanz ausgeführt und zwei Clients A und B sind damit verbunden. Ich führe ein schreibgeschütztes LUA-Skript von einem von ihnen und von dem anderen eine schreibgeschützte Hash-Operation aus, indem ich die Redis-Vorlage in Java verwende. Da alle Operationen in Redis blockieren, gehe ich davon aus, dass der andere Client warten muss, bis die Lua-Skriptoperation abgeschlossen ist, wenn das LUA-Skript zuerst ausgegeben wird. Auf die gleiche Weise muss die Lua-Skriptoperation warten, bis die Hash-Operation abgeschlossen ist, wenn die Hash-Operation zuerst ausgegeben wird. Ist das eine gültige Aussage? Wie behandelt Redis Anrufe aus mehreren Quellen, wenn es sich um Single-Threaded handelt?

Antworten

GuyKorland Dec 27 2020 at 02:29

Redis verfügt über eine interne Even-Schleife, die jedes Mal ein einzelnes Ereignis im Hauptthread ausführt. Weitere Informationen finden Sie unter:

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