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

ขอแนะนำ Redis OM Spring

การแมปวัตถุ และอื่นๆ สำหรับ 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
เพื่อสร้างสคีมาดัชนี ในกรณีของ
Company
POJO เรามีคุณสมบัติชื่อที่มีคำอธิบายประกอบว่า "ค้นหาได้" ซึ่งหมายความว่าเราได้รับความสามารถในการค้นหาข้อความแบบเต็มในช่องนั้น สิ่งนี้สะท้อนให้เห็นในคำจำกัดความของฟิลด์สคีมา
$.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 ของคุณ เรายินดีรับฟังความคิดเห็น ประชาสัมพันธ์ และปัญหาของคุณ!