วีดีโอ: Redis เกิดขึ้นพร้อมกันหรือไม่?
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
ตกลง, Redis เป็นเธรดเดียวที่ระดับผู้ใช้ OTOH I/O แบบอะซิงโครนัสทั้งหมดได้รับการสนับสนุนโดยพูลเธรดเคอร์เนลและ/หรือไดรเวอร์ระดับแยก ' พร้อมกัน ' สำหรับบางคน รวมถึงการแจกจ่ายเหตุการณ์เครือข่ายไปยังเครื่องสถานะซ็อกเก็ต
ด้วยวิธีนี้ Redis สามารถจัดการการเชื่อมต่อพร้อมกันได้กี่รายการ
Redis 10000 พร้อมกัน ลูกค้า ขีดจำกัด . ใช่ แต่อย่างข้างบนทั้งสอง max จำนวนของ file descriptor และการตั้งค่า maxmemory configuration จะกลายเป็นปัจจัยในการควบคุมปริมาณ
ในทำนองเดียวกัน คุณไม่ควรใช้ Redis เมื่อใด เราจะไม่ต้องการใช้ Redis สำหรับกรณีการใช้งานเช่นนี้:
- การจัดเก็บข้อมูลจำนวนมากในค่าสตริงเดียว (เช่น เนื้อหาฟีดล่าสุดสำหรับผู้ใช้แต่ละราย)
- การจัดเก็บข้อมูลในมิติข้อมูลตั้งแต่ 2 มิติขึ้นไป (เช่น คะแนนสำหรับแต่ละคู่ (ผู้ใช้ หัวข้อ))
- การจัดเก็บข้อมูลที่ต้องการการสืบค้นที่มีความซับซ้อนทางเวลาสูง
เมื่อพิจารณาถึงสิ่งนี้ Redis มีหลายเธรดหรือไม่
Redis ส่วนใหญ่เป็นหนึ่งเดียว- เกลียว เซิร์ฟเวอร์จาก POV ของการดำเนินการคำสั่ง (จริงๆ แล้วเป็นเวอร์ชันทันสมัยของ Redis ใช้เธรดสำหรับสิ่งต่าง ๆ) ไม่ได้ออกแบบมาเพื่อประโยชน์จาก หลายรายการ แกนซีพียู มันไม่ยุติธรรมเลยที่จะเปรียบเทียบคนเดียว Redis ตัวอย่างของ a หลาย - เกลียว ที่เก็บข้อมูล
มีอินสแตนซ์ Redis จำนวนเท่าใด
ถ้าทำได้ ให้ใช้ Redis 32 บิต ตัวอย่าง.
แนะนำ:
Coroutines เกิดขึ้นพร้อมกันหรือไม่?
คอรูทีน. หากต้องการตัดเรื่องสั้นให้สั้นลง coroutines ก็เหมือนกับเธรดที่ทำงานพร้อมกัน อย่างไรก็ตาม coroutines ไม่จำเป็นต้องเชื่อมโยงกับเธรดใดโดยเฉพาะ Coroutine สามารถเริ่มต้นการดำเนินการบนเธรดเดียว จากนั้นระงับและดำเนินการต่อไปในเธรดอื่น
กลไกใดในการบังคับใช้ข้อจำกัดในการเข้าถึงทรัพยากรเมื่อมีการดำเนินการหลายเธรดใน Redis
ล็อค เมื่อคำนึงถึงสิ่งนี้ Redis จัดการกับภาวะพร้อมกันอย่างไร โปรแกรมเธรดเดียวสามารถให้ได้ พร้อมกัน ที่ระดับ I/O โดยใช้กลไก I/O (de)multiplexing และวนรอบเหตุการณ์ (ซึ่งเป็นสิ่งที่ Redis ทำ ). Parallelism มีค่าใช้จ่าย: ด้วยซ็อกเก็ตหลายตัว/หลายคอร์ที่คุณสามารถหาได้บนฮาร์ดแวร์สมัยใหม่ การซิงโครไนซ์ระหว่างเธรดจึงมีราคาแพงมาก นอกจากนี้ นโยบายหน่วยความจำที่ส่งคืนข้อผิดพลาดเมื่อถึงขีดจำกัดหน่วยความจำและไคลเอ็นต์พยายามรันคำสั่งที่ส่งผลให้มีการใช้งานหน่วยความจำสูงขึ้นหรือไม่ เ
Redis สามารถรองรับการเชื่อมต่อได้จำนวนเท่าใด
จำนวนไคลเอ็นต์สูงสุดใน Redis 2.6 ขีดจำกัดนี้เป็นไดนามิก: โดยค่าเริ่มต้น ไคลเอ็นต์ถูกตั้งค่าเป็น 10000 ไคลเอ็นต์ เว้นแต่จะระบุไว้เป็นอย่างอื่นโดยคำสั่ง maxclients ใน Redis conf
คำสั่งใดให้จำนวนไบต์ทั้งหมดที่จัดสรรโดย Redis
หน่วยความจำที่ใช้จะกำหนดจำนวนไบต์ทั้งหมดที่จัดสรรโดย Redis โดยใช้ตัวจัดสรร (ทั้ง libc มาตรฐาน, jemalloc หรือตัวจัดสรรทางเลือก เช่น tcmalloc) คุณสามารถรวบรวมข้อมูลเมตริกการใช้หน่วยความจำทั้งหมดสำหรับอินสแตนซ์ Redis ได้โดยการเรียกใช้ "หน่วยความจำข้อมูล"
การจำลองแบบใน Redis คืออะไร
การจำลองแบบ การจำลองแบบ Redis นั้นใช้งานง่ายและกำหนดค่าการจำลองแบบ master-slave ซึ่งช่วยให้เซิร์ฟเวอร์รอง Redis เป็นสำเนาที่ถูกต้องของเซิร์ฟเวอร์หลัก ต่อไปนี้เป็นข้อเท็จจริงที่สำคัญมากบางประการเกี่ยวกับการจำลองแบบ Redis: Redis ใช้การจำลองแบบอะซิงโครนัส การจำลองแบบยังไม่บล็อกด้านทาส