Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

RediSearch 2.0 บรรลุหลักชัยแรก

เรามีความยินดีที่จะประกาศเปิดตัวก้าวแรกในการพัฒนา RediSearch 2.0 RediSearch เป็นเสิร์ชเอ็นจิ้นแบบเรียลไทม์ที่ให้คุณสืบค้นข้อมูล Redis ของคุณเพื่อตอบคำถามที่ซับซ้อนหลากหลาย

เหตุการณ์สำคัญนี้เรียกว่า 2.0-M01 นับเป็นการสร้างโครงสร้างใหม่ของวิธีที่ดัชนีถูกซิงค์กับข้อมูล แทนที่จะต้องเขียนข้อมูลผ่านดัชนี (โดยใช้ FT.ADD คำสั่ง) RediSearch จะติดตามข้อมูลที่เขียนในแฮชและจัดทำดัชนีโดยอัตโนมัติ

ข้อได้เปรียบที่สำคัญคือตอนนี้คุณสามารถเพิ่ม RediSearch ให้กับอินสแตนซ์ Redis ที่มีอยู่และสร้างดัชนีรองโดยไม่ต้องอัปเดตโค้ดแอปพลิเคชันของคุณ วิธีนี้ช่วยให้คุณเริ่มใช้ RediSearch กับข้อมูลที่มีอยู่ได้ทันที เพียงโหลดโมดูล RediSearch และกำหนดสคีมา คาดว่าจะพร้อมใช้งานทั่วไปของ RediSearch 2.0 ในฤดูใบไม้ร่วงนี้

(หมายเหตุ: คุณลักษณะใหม่นี้แนะนำการเปลี่ยนแปลงบางอย่างใน API (รายการด้านล่าง) เราพยายามรักษาความเข้ากันได้แบบย้อนหลังให้มากที่สุด แต่ในกรณีนี้ เป็นไปไม่ได้ เราวางแผนที่จะทำการปรับเปลี่ยนและแก้ไขต่อไปเมื่อเรารวบรวมความคิดเห็นของลูกค้า)

RediSearch 2.0 บรรลุหลักชัยแรก

การเปลี่ยนแปลง API

ตามที่ระบุไว้ข้างต้น เป้าหมาย RediSearch 2.0 นี้มีการเปลี่ยนแปลงหลายอย่างใน API:  

  1. ดัชนีไม่อยู่ในพื้นที่คีย์อีกต่อไป หากคุณใช้คีย์ดัชนี (idx:<ชื่อดัชนี>) เพื่อแสดงรายการดัชนีในฐานข้อมูล ตัวอย่างเช่น วิธีนี้ใช้ไม่ได้อีกต่อไป อย่างไรก็ตาม เราได้แนะนำคำสั่ง FT._LIST เพื่อส่งคืนดัชนีทั้งหมดในฐานข้อมูล
  2. ต้องสร้างดัชนีด้วยคำนำหน้า/ตัวกรอง ซึ่งระบุเอกสารที่จะจัดทำดัชนีโดยอัตโนมัติโดย RediSearch คุณสามารถระบุคำนำหน้าอย่างง่ายและ/หรือนิพจน์ตัวกรองที่ซับซ้อนได้
  3. ไม่สามารถอัพเกรดได้ หากคุณมี RDB ที่สร้างด้วย RediSearch เวอร์ชันเก่า RediSearch 2.0 จะไม่สามารถอ่านได้ ปัจจุบัน คุณจะต้องสร้างดัชนีใหม่ทั้งชุดข้อมูล อย่างไรก็ตาม เรากำลังดำเนินการอัปเกรดสำหรับรุ่น GA
  4. ใช้งานได้กับ Redis 6 ขึ้นไปเท่านั้น
  5. คำสั่ง FT ถูกแมปกับคำสั่งที่เทียบเท่า Redis ซึ่งช่วยให้แอปพลิเคชันที่มีอยู่ยังคงทำงานกับ RediSearch 2.0 ได้ การทำแผนที่มีดังนี้:
    1. FT.ADD => HSET
    2. FT.DEL => DEL (DD โดยค่าเริ่มต้น)
    3. FT.GET => HGETALL
    4. FT.MGET => HGETALL
  6. ดัชนีกลับหัวจะไม่ถูกบันทึกลงใน RDB อีกต่อไป . นี่ไม่ได้หมายความว่าไม่รองรับการคงอยู่ RediSearch จะบันทึกการกำหนดดัชนีไปยัง RDB และจัดทำดัชนีข้อมูลในพื้นหลังหลังจากที่ Redis เริ่มทำงาน คุณสามารถทราบได้ว่าการจัดทำดัชนีใหม่เสร็จสิ้นเมื่อใดโดยการตรวจสอบสถานะการทำดัชนีโดยใช้ FT.INFO คำสั่ง

API ใหม่

การอัปเดตที่ใหญ่ที่สุดสำหรับ API คือวิธีการสร้างดัชนี ใน RediSearch 2.0 คำสั่ง FT.CREATE ใช้ในการสร้างดัชนี ส่วนเพิ่มเติมของ API จะถูกเน้นด้วยสีเหลืองที่นี่:

FT.CREATE {index}
    ON {structure} 
     [PREFIX {count} {prefix} [{prefix} ..]
     [FILTER {filter}]
     [LANGUAGE_FIELD {lang_field}]
     [LANGUAGE {lang}]
     [SCORE_FIELD {score_field}]
     [SCORE {score}]
     [PAYLOAD_FIELD {payload_field}]
   [TEMPORARY {seconds}] 
   [MAXTEXTFIELDS]
   [NOOFFSETS] [NOHL] [NOFIELDS] [NOFREQS]
   [STOPWORDS {num} {stopword} ...]
   SCHEMA {field} [TEXT [NOSTEM] [WEIGHT {weight}] [PHONETIC {matcher}] | NUMERIC | GEO | TAG [SEPARATOR {sep}] ] [SORTABLE][NOINDEX] ...

มาดูรายละเอียดกัน:

  • เปิด {โครงสร้าง} ปัจจุบันรองรับเฉพาะ HASH
  • คำนำหน้า {จำนวน} {คำนำหน้า} บอกดัชนีว่าควรจัดทำดัชนีคีย์ใด คุณสามารถเพิ่มคำนำหน้าหลายรายการเพื่อสร้างดัชนี เนื่องจากอาร์กิวเมนต์เป็นทางเลือก ค่าเริ่มต้นคือ * (คีย์ทั้งหมด)
  • ตัวกรอง {ตัวกรอง} เป็นนิพจน์ตัวกรองที่มีภาษานิพจน์การรวม RediSearch แบบเต็ม เป็นไปได้ที่จะใช้ @__key เพื่อเข้าถึงคีย์ที่เพิ่งเพิ่ม/เปลี่ยนแปลง
  • ภาษา และ คะแนน ให้คุณแทนที่ภาษาเริ่มต้นและคะแนนสำหรับเอกสารทั้งหมดที่จัดทำดัชนี
  • LANGUAGE_FIELD , SCORE_FIELD และ PAYLOAD_FIELD ช่วยให้คุณมีภาษาและการให้คะแนนเฉพาะเอกสาร และใช้เพย์โหลดเป็นฟิลด์ภายในเอกสารได้

ข้อจำกัดและการเปลี่ยนแปลงอื่นๆ

หลักชัยของ RediSearch 2.0-M01 ยังมีการอัปเดตอื่นๆ อีกสองสามอย่าง:

  • NOSAVE ไม่รองรับอีกต่อไป
  • การอัปเดตแฮชหมายความว่าเอกสารทั้งหมดจะได้รับการจัดทำดัชนี (การแจ้งเตือนคีย์สเปซไม่ได้ระบุว่าฟิลด์ใดมีการเปลี่ยนแปลง) ดังนั้นการอัปเดตบางส่วนจะช้าลง โปรดทราบว่าเรายังคงตรวจสอบตัวเลือกต่างๆ เพื่อปรับปรุงประสิทธิภาพในสถานการณ์เหล่านี้
  • ตอนนี้ชื่อช่องต้องคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ดังนั้นการประกาศช่อง "FOO" และการสร้างดัชนีเป็น "foo" จะไม่ทำงาน
  • The FT.ADD คำสั่งจะถูกแมปกับ hset ดังที่แสดงไว้ที่นี่:

FT.ADD idx doc1 1.0 LANGUAGE eng PAYLOAD payload FIELDS f1 v1 f2 v2

ถูกแมปกับ

HSET doc1 __score 1.0 __language eng __payload payload f1 v1 f2 v2

ซึ่งหมายความว่าฟิลด์คะแนน ภาษา และเพย์โหลดบนดัชนีของคุณต้องเรียกว่า __score, __language, __payload เพื่อให้การแมปทำงานตามที่คาดไว้

  • FT.ADDHASH ไม่ได้รับการสนับสนุนอีกต่อไป ใช้ HSET .
  • FT.OPTIMIZE ไม่รองรับอีกต่อไป ฟังก์ชัน RediSearch Garbage Collection มีหน้าที่ปรับดัชนีให้เหมาะสม

บทสรุป

เรารู้สึกตื่นเต้นมากเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ เนื่องจากขณะนี้คุณสามารถโหลด RediSearch ลงในฐานข้อมูล Redis ที่มีอยู่และจัดทำดัชนีข้อมูลที่มีอยู่ของคุณซึ่งอยู่ในแฮช โดยไม่ต้องอัปเดตตรรกะของแอปพลิเคชันของคุณเมื่อจัดการกับเอกสารเหล่านี้ คุณสามารถทดลองใช้งานหลักสำคัญนี้ได้โดยใช้ซอร์สโค้ดจาก GitHub หรือโดยใช้ 1:99:1 อิมเมจ RedisSarch Docker เวอร์ชันนี้ยังไม่พร้อมสำหรับการผลิต แต่เราต้องการแชร์กับคุณตอนนี้เพื่อรวบรวมความคิดเห็นของคุณ โปรดแบ่งปันความคิดเห็นหรือปัญหาใดๆ บนที่เก็บ GitHub ของเราหรือในฟอรัมชุมชน Redis