สคริปต์ Lua บล็อกเซิร์ฟเวอร์ Redis ทั้งหมดได้อย่างไร [ซ้ำ]

Dec 25 2020

สมมติว่าฉันมีอินสแตนซ์ Redis ที่ทำงานอยู่และฉันมีไคลเอนต์ A และ B สองตัวเชื่อมต่ออยู่ ฉันรันสคริปต์ LUA การดำเนินการแบบอ่านอย่างเดียวจากหนึ่งในนั้นและจากอีกสคริปต์การดำเนินการแฮชแบบอ่านอย่างเดียวโดยใช้เทมเพลต Redis ใน Java เนื่องจากการดำเนินการทั้งหมดใน 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