W jaki sposób skrypty Lua blokują cały serwer Redis? [duplikować]
Powiedzmy, że mam uruchomioną instancję Redis i mam z nią połączonych dwóch klientów A i B. Wykonuję skrypt LUA operacji tylko do odczytu z jednego z nich, az drugiego operację mieszania tylko do odczytu, używając szablonu Redis w Javie. Ponieważ wszystkie operacje w Redis są blokowane, zakładam, że jeśli skrypt LUA zostanie uruchomiony jako pierwszy, drugi klient musi poczekać, aż operacja skryptu Lua zostanie zakończona. W ten sam sposób, jeśli operacja mieszania jest wykonywana jako pierwsza, operacja skryptu Lua musi czekać do zakończenia operacji mieszania. Czy to prawidłowe stwierdzenie? w jaki sposób Redis obsługuje wywołania z wielu źródeł, jeśli jest on jednowątkowy?
Odpowiedzi
Redis ma wewnętrzną parzystą pętlę, która za każdym razem uruchamia pojedyncze zdarzenie w głównym wątku, aby uzyskać więcej informacji, zobacz:
- https://redis.io/topics/internals-rediseventlib
- http://nosqlgeek.blogspot.com/2019/10/so-what-exactly-is-event-loop.html