Valkey 8.1: Redis fork นำเสนอประสิทธิภาพ การปรับปรุงหน่วยความจำ และโมดูลใหม่

วัลกี้

ได้มีการประกาศแล้ว เปิดตัวเวอร์ชันใหม่ของ «Valkey 8.1» Redis fork ที่เกิดขึ้นหลังจากการเปลี่ยนแปลงไปเป็นใบอนุญาตแบบกรรมสิทธิ์ และซึ่งมุ่งหวังที่จะรักษาปรัชญาแบบเปิดของโครงการเดิมไว้

วัลคีย์ 8.1 มีการปรับปรุงและเปลี่ยนแปลงมากมาย ซึ่งมุ่งเน้นไปที่การเพิ่มประสิทธิภาพการทำงานที่ลดความหน่วง เพิ่มประสิทธิภาพหน่วยความจำ และความสามารถแบบโมดูลาร์ใหม่

คุณสมบัติใหม่ที่สำคัญใน Valkey 8.1

Uno การเปลี่ยนแปลงที่สำคัญที่สุด ในเวอร์ชันนี้คือ เขียนใหม่ทั้งหมดของตารางแฮชใช้ในทั้งการจัดเก็บข้อมูลแบบคีย์-ค่าและประเภทข้อมูลที่มีโครงสร้างเช่น แฮช เซ็ต และเซ็ตที่เรียงลำดับ ด้วยการออกแบบใหม่นี้ สามารถลดการใช้หน่วยความจำได้: น้อยลง 20 ไบต์ต่อคีย์โดยไม่ต้องใช้ TTL และสูงถึง 30 ไบต์หากคีย์มีอายุการใช้งานที่กำหนดไว้ นอกจากนี้ การลดการเข้าถึงหน่วยความจำแบบสุ่มยังนำไปสู่การปรับปรุงประสิทธิภาพ 10% ในสภาพแวดล้อม I/O เธรดเดียว

คุณลักษณะใหม่ล่าสุดอีกประการหนึ่งใน Valkey 8.1 คือการวนซ้ำคีย์ในการใช้งานเช่นคำสั่ง KEYS หรือ การถ่ายโอนคีย์ระหว่างโหนดในคลัสเตอร์มีระบบโหลดแคชล่วงหน้าแล้ว ซึ่งจะทำให้สามารถใช้คีย์ถัดไปได้ก่อนเริ่มการประมวลผล แนวทางนี้ช่วยเพิ่มความเร็วในการค้นหาคีย์ได้ 3,5 เท่า โดยใช้ประโยชน์จากแคชโปรเซสเซอร์ได้ดีขึ้น

การปรับปรุง I/O และ TLS แบบมัลติเธรด

Valkey ยังคงดำเนินการเปลี่ยนผ่านไปสู่โมเดล I/O แบบมัลติเธรด ตอนนี้ การประมวลผลการเชื่อมต่อ TLS ดำเนินการในสตรีมที่แยกจากกันซึ่งเพิ่มความสามารถในการรับการเชื่อมต่อใหม่เป็นสามเท่า ฟังก์ชันเช่น SSL_pending() และ ERR_clear_error() ยังถูกแยกออกเป็นเธรดที่แยกจากกัน ส่งผลให้ประสิทธิภาพการทำงาน SET เพิ่มขึ้น 10% และการทำงาน GET เพิ่มขึ้น 22%

การจำลองได้รับการปรับปรุงแล้วโดยเฉพาะในสภาพแวดล้อมที่มี TLS ที่ใช้งานอยู่ ช่วยขจัดการดำเนินการซ้ำซ้อน เช่น การตรวจสอบความถูกต้องที่ไม่จำเป็น ส่งผลให้การซิงโครไนซ์เต็มรูปแบบระหว่างการจำลองแบบไม่มีดิสก์ดีขึ้น 18% และลดต้นทุนการคัดลอกและเขียนลง 47%

การเพิ่มประสิทธิภาพบนชุดสั่งและประเภทความน่าจะเป็น

El คำสั่ง ZRANK สำหรับชุดที่สั่งได้ถูกปรับปรุงแล้วและ ตอนนี้เร็วขึ้น 45% ในขณะที่ ZADD ได้นำคำสั่ง SIMD มาใช้ เพื่อให้เกิดประสิทธิภาพมากยิ่งขึ้น สำหรับประเภทข้อมูลเชิงความน่าจะเป็น การใช้ HyperLogLog ได้รับการปรับปรุงให้ใช้หน่วยความจำคงที่เพียง 12 KB เท่านั้น และการใช้คำสั่ง AVX2 ช่วยให้ประสิทธิภาพการดำเนินการ PFMERGE และ PFCOUNT เพิ่มขึ้นถึง 12 เท่า และ BITCOUNT เพิ่มขึ้นถึง 5 เท่า

การดีแฟร็กเมนต์ที่ทำงานอย่างต่อเนื่องและควบคุมรีจิสทรีได้มากขึ้น

El ระบบการจัดเรียงข้อมูลแบบแอ็คทีฟยังได้รับการปรับปรุงแล้ว เพื่อหลีกเลี่ยงการอุดตันหรือความล่าช้า ขณะนี้รอบการดีแฟร็กเมนต์แต่ละรอบใช้เวลาเพียง 500 ไมโครวินาทีเท่านั้น และได้ดำเนินการตามกลยุทธ์ต่อต้านการอดอาหารเพื่อป้องกันไม่ให้ภารกิจเหล่านี้ต้องเลื่อนออกไปเนื่องจากต้องปฏิบัติการในระยะยาว

ได้รับการแนะนำ ตัวเลือกการกำหนดค่าใหม่สำหรับการจัดรูปแบบบันทึกรวมถึงรูปแบบเวลาแบบกำหนดเอง และโหมด COMMANDLOG ใหม่ที่บันทึกคำขอและการตอบสนองที่ยาวนาน นอกจากนี้ คำสั่ง LATENCY LATEST ยังได้รับการขยายด้วยหน่วยเมตริกใหม่ซึ่งทำให้มองเห็นค่าความล่าช้าสูงสุดและปริมาณที่บันทึกไว้ได้ชัดเจนยิ่งขึ้น

คุณสมบัติใหม่ โมดูลและการสนับสนุน

วัลกี้ ตอนนี้ช่วยให้คุณสามารถดำเนินการ SET IFEQ ได้ ซึ่งกำหนดเงื่อนไขการเขียนคีย์ให้มีค่าเป็นปัจจุบัน อีกด้วย แนะนำการสนับสนุนแบบโมดูลาร์สำหรับเอ็นจิ้นสคริปต์การเปิดโอกาสให้ใช้ภาษาอื่นแทน Lua ได้ผ่านโมดูลที่กำหนดเอง

ในเวอร์ชั่นนี้ด้วย เปิดตัวโมดูลหลายตัว:

  • โมดูลการค้นหา (Google): เครื่องมือค้นหาความคล้ายคลึงของเวกเตอร์ เหมาะสำหรับกรณีการเรียนรู้ของเครื่องที่ต้องการความหน่วงต่ำและปริมาณงานสูง
  • โมดูล JSON (AWS): ช่วยให้สามารถจัดการชิ้นส่วนเอกสาร JSON ได้โดยตรง โดยไม่ต้องประมวลผลเนื้อหาบนไคลเอนต์ทั้งหมด
  • โมดูลตัวกรองบลูม (AWS): การใช้งานตัวกรอง Bloom ซึ่งมีประโยชน์ในการกำหนดความเป็นสมาชิกที่เป็นไปได้ขององค์ประกอบในชุด โดยมีประสิทธิภาพเชิงความน่าจะเป็น

สุดท้ายนี้ หากสนใจอยากทราบข้อมูลเพิ่มเติม สามารถเข้าไปดูรายละเอียดใน ลิงค์ต่อไปนี้