การแมปวัตถุ และอื่นๆ สำหรับ Redis และ Spring
Redis OM Spring เป็นไลบรารีไคลเอ็นต์ใหม่ที่ออกแบบมาเพื่อช่วยคุณสร้างโมเดลโดเมนและคงข้อมูลไว้กับ Redis ในแอปพลิเคชัน Spring ของคุณ ไลบรารีทำงานร่วมกับ Redis แบบโอเพ่นซอร์ส แต่มีความสามารถในการจัดทำดัชนีและการสืบค้นเพิ่มเติมมากมายเมื่อใช้กับ RedisJSON
Redis รวมกับโมดูลต่างๆ ทำให้เป็นหนึ่งในแพลตฟอร์มข้อมูลที่เร็วที่สุดในโลก แต่ก็ไม่ใช่เรื่องง่ายเลยที่จะใช้ประโยชน์จากความเร็วของมัน Redis OM Spring มอบประสบการณ์นักพัฒนาที่น่าสนใจ และในโพสต์นี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถสร้างอะไรได้บ้าง
แรงจูงใจ
ในฐานะนักพัฒนา เป็นเรื่องยากที่จะสะดุดกับเทคโนโลยีที่มีประสิทธิภาพและเรียบง่าย เมื่อใช้ OSS Redis เพียงอย่างเดียว คุณจะมีโฮสต์ของโครงสร้างข้อมูลและคำสั่งที่เกี่ยวข้องเพื่อทำงานด้านข้อมูลและการส่งข้อความที่จำเป็นสำหรับแอปพลิเคชันระดับองค์กร
ในทำนองเดียวกัน ในโลกของการพัฒนา Java ระดับองค์กร ในช่วง 18 ปีที่ผ่านมา Spring ได้ควบคุมความซับซ้อนของการสร้างแอปพลิเคชันขนาดใหญ่ที่มีฟีเจอร์มากมาย ในพื้นที่นี้ Redis ได้รับการสนับสนุนจาก Spring Data Redis ที่น่าทึ่ง ซึ่งให้ทั้งนามธรรมระดับต่ำและระดับสูงสำหรับการโต้ตอบกับ OSS Redis
ความท้าทายอย่างหนึ่งในการใช้ Spring Data Redis คือไม่รองรับโมดูล Redis ที่ Redis เราพัฒนาโมดูล Redis ที่เปลี่ยนเกมหลายโมดูลที่เสริมโครงสร้างข้อมูลหลักของ Redis ด้วยการค้นหา การจัดทำดัชนี JSON และการค้นหา ข้อมูลกราฟ ข้อมูลอนุกรมเวลา และเฟรมเวิร์กที่สมบูรณ์สำหรับการคำนวณทางฝั่งเซิร์ฟเวอร์ (Redis Gears) เราสร้าง Redis OM Spring เพื่อใช้ประโยชน์จากโมดูลเหล่านี้และมอบชุดความสามารถที่กว้างขึ้น
สปริง Redis OM
ไลบรารีไคลเอนต์ตระกูล Redis OM มุ่งหวังที่จะนำเสนอนามธรรมระดับสูงที่นำไปใช้ตามสำนวนสำหรับภาษา/แพลตฟอร์มที่คุณเลือก ขณะนี้เรารองรับชุมชน Node.js, Python, .NET และ Spring Redis OM Spring ช่วยให้นักพัฒนาเพิ่มพลังของ Redis ให้กับแอปพลิเคชัน Spring Boot ได้อย่างง่ายดาย
โดยเฉพาะ Redis OM Spring ให้พื้นที่เก็บข้อมูลที่แข็งแกร่งและนามธรรมการทำแผนที่วัตถุแบบกำหนดเองที่สร้างขึ้นบนเฟรมเวิร์ก Spring Data Redis (SDR) ที่น่าทึ่ง
เวอร์ชันตัวอย่างปัจจุบันให้ความสามารถ Spring Data Redis ทั้งหมด บวกกับ:
- การแมป Java กับ JSON
- ปรับปรุงการแมปแฮช
- สร้างดัชนีการค้นหาอัตโนมัติ
- คลังเก็บข้อมูลสปริงซึ่งสนับสนุนโดย RediSearch
การแมป Java กับ JSON
ในการแมปออบเจ็กต์ Java กับเอกสาร JSON ที่จัดเก็บไว้ใน Redis โดยใช้ RedisJSON คุณสามารถใช้
@Documentคำอธิบายประกอบ เช่นเดียวกับคำอธิบายประกอบการแมปเอนทิตี Spring Data อื่นๆ คุณเพิ่มลงในการประกาศคลาส ตัวอย่างเช่น สมมติว่าคุณต้องการแมปวัตถุประเภท
Company. เพียงเพิ่ม
@Documentดังที่แสดงด้านล่าง:
คุณอาจสังเกตเห็นว่าเนื้อหาของคลาสนี้มีหมายเหตุประกอบหลายรายการ
@Idมาจาก Spring Data และประกาศ
idคุณสมบัติเป็นคีย์ Redis ที่จะเก็บเอกสาร JSON ของเรา
ฟีเจอร์ที่ได้รับความนิยมมากที่สุดของตระกูล Spring Data ของไลบรารีคือ Data Repositories คำอธิบายประกอบสองรายการถัดไปช่วยให้คุณใช้ RediSearch เพื่อสร้างดัชนีเอกสาร JSON สิ่งนี้ถูกเปิดเผยผ่าน
RedisDocumentRepositoryอินเทอร์เฟซ:
การประกาศพื้นที่เก็บข้อมูลว่างเป็นสิ่งที่คุณต้องการเพื่อรับฟังก์ชัน/การแบ่งหน้า CRUD พื้นฐานและการเรียงลำดับสำหรับ POJO ของคุณ
Redis OM Spring ใช้ฟิลด์ POJO ที่มี
@Indexedหรือ
@Searchableเพื่อสร้างสคีมาดัชนี ในกรณีของ
CompanyPOJO เรามีคุณสมบัติชื่อที่มีคำอธิบายประกอบว่า "ค้นหาได้" ซึ่งหมายความว่าเราได้รับความสามารถในการค้นหาข้อความแบบเต็มในช่องนั้น สิ่งนี้สะท้อนให้เห็นในคำจำกัดความของฟิลด์สคีมา
$.name AS name TEXT.
ในทางกลับกัน แท็กฟิลด์จะมีหมายเหตุว่า "ทำดัชนีได้" ซึ่งหมายความว่าเราได้รับฟิลด์ดัชนีประเภท TAG ซึ่งหมายความว่าเราสามารถค้นหาบริษัทด้วยค่าที่แน่นอนของฟิลด์ สิ่งนี้สะท้อนให้เห็นอีกครั้งในคำจำกัดความของฟิลด์สคีมา:
$.tags[*] AS tags TAG
สร้างการสืบค้นข้อมูลแบบไดนามิกอย่างง่าย
บางทีคุณสมบัติที่น่าสนใจที่สุดของ Redis OM Spring ก็คือความสามารถในการสร้างการใช้งานที่เก็บโดยอัตโนมัติ ณ รันไทม์จากอินเทอร์เฟซของที่เก็บ ด้วยฟิลด์ที่เหมาะสมที่ได้รับการจัดทำดัชนี ขณะนี้คุณสามารถตอบคำถามทั้งหมดด้านล่างโดยไม่ต้องเขียนโค้ดเพิ่มเติม:
พร็อกซีที่เก็บมีสองวิธีในการรับเคียวรีเฉพาะร้านค้าจากชื่อเมธอด:
- โดยการสืบค้นจากชื่อเมธอดโดยตรง
- โดยใช้การสืบค้นที่กำหนดด้วยตนเองโดยใช้
@Query
หรือ@Aggregation
คำอธิบายประกอบ
มาดูวิธีการประกาศสองวิธีที่เพิ่มไปยังอินเทอร์เฟซของที่เก็บ
findOneByName
Redis OM Spring ใช้ชื่อเมธอดและพารามิเตอร์เพื่อสร้างการสืบค้นที่เหมาะสม มันใช้เมธอด return type เพื่อกำหนดวิธีการแพ็คและส่งคืนผลลัพธ์
findOneByNameส่งคืน
Optional of Company.
findOneยังบอกเป็นนัยว่าจะส่งกลับผลลัพธ์เพียงรายการเดียว แม้ว่าจะมีหลายผลลัพธ์ก็ตาม ไลบรารีแยกวิเคราะห์ชื่อเมธอดเพื่อกำหนดจำนวนพารามิเตอร์ที่คาดไว้ ตัวอย่างเช่น
ByNameส่วนหนึ่งของเมธอดบอกเราว่าเราคาดหวังพารามิเตอร์ตัวเดียวชื่อ
name.
findByLocationNear
Redis OM Spring รองรับประเภท GeoJSON เพื่อจัดเก็บข้อมูลเชิงพื้นที่ โดยใช้
nearคีย์เวิร์ดในการสืบค้น เรากำลังบอกให้โค้ดของเราคาดหวัง
Point
(org.springframework.data.geo.Point)และ
Distance (org.springframework.data.geo.Distance)พิมพ์เป็นพารามิเตอร์
การใช้ที่เก็บ
เช่นเดียวกับ Spring Data Repositories อื่นๆ คุณสามารถฉีดที่เก็บลงในองค์ประกอบ Spring อื่นได้:
สรุป
นี่เป็นเพียงตัวอย่าง การเปิดตัว Redis OM Spring ยังมีอะไรอีกมากที่จะสร้าง แต่สำหรับตอนนี้ เราต้องการความช่วยเหลือจากคุณ! คุณสามารถตรวจสอบ README สำหรับรายละเอียดเกี่ยวกับวิธีการติดตั้งโครงการในแอปพลิเคชัน Spring ของคุณ เรายินดีรับฟังความคิดเห็น ประชาสัมพันธ์ และปัญหาของคุณ!