Como os scripts Lua bloqueiam todo o servidor Redis? [duplicado]

Dec 25 2020

Digamos que eu tenha uma instância do Redis em execução e dois clientes A e B conectados a ela. Eu executo um script LUA de operações somente leitura de um deles e do outro uma operação hash somente leitura usando o modelo Redis em Java. Como todas as operações no Redis estão bloqueando, presumo que, se o script LUA for executado primeiro, o outro cliente terá que esperar até que a operação do script Lua seja concluída. Da mesma forma, se a operação de hash for executada primeiro, a operação de script Lua deve esperar até que a operação de hash seja concluída. Esta é uma declaração válida? como o Redis lida com chamadas de várias fontes se for de thread único?

Respostas

GuyKorland Dec 27 2020 at 02:29

O Redis tem um Even Loop interno que executa um único evento no thread principal a cada vez para obter mais detalhes, consulte:

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