Object mapping ที่รวดเร็วและง่ายสำหรับ JavaScript และ TypeScript
ฉันเขียนบางอย่าง—จริงๆ แล้วหลายคนเขียนหลายอย่าง—ฉันแค่เขียนเวอร์ชัน Node.js ฉันคิดว่ามันค่อนข้างเก๋ ที่สมควรได้รับความสนใจ และฉันตื่นเต้นมาก สิ่งที่ฉันพูดถึง: Redis OM สำหรับ Node.js
Redis OM คืออะไร? Redis OM คือ library ที่ทำให้ใช้ Redis ง่ายขึ้นโดย mapping โครงสร้างข้อมูล Redis ตรงไปยังโค้ดของคุณ ส่วน OM ย่อมาจาก object mapping แต่เราวางแผนทำมากกว่านั้นในอนาคต
อ่านต่อเพื่อรายละเอียดเพิ่มเติม
เร็วกว่ารวดเร็ว
คุณน่าจะรู้แล้วว่า Redis เร็ว—เร็วกว่ารวดเร็ว—และจัดเก็บสิ่งที่โปรแกรมของคุณสนใจ: hashes, lists, sets, สิ่งแบบนั้น นี่คือโครงสร้างที่ฉันคิดในฐานะโปรแกรมเมอร์ ตอนอธิบาย Redis ให้คนไม่รู้จักเทคนิค ฉันบอกว่ Redis คือโครงสร้างข้อมูลที่คุณเรียนในมหาวิทยาลัย พร้อม wire-protocol วางไว้หน้ามัน
Modules ทำให้ Redis awesome ขึ้นอีก (ใช่ ฉันรู้ว่าไม่ใช่คำจริง) โดยนำ ใหม่ โครงสร้างข้อมูลมาให้โปรแกรมของคุณสนใจ RedisBloom เพิ่ม probabilistic data structures เช่น Bloom และ Cuckoo filters RedisGraph ให้คุณจัดเก็บและ query graphs ด้วย Cypher RedisAI ให้ tensors สำหรับ AI things ที่เก๋ๆ ทั้งหมดมีประโยชน์มาก
โมดูลที่ awesome ที่สุด
แต่มี 2 โมดูลที่ทำให้ Redis เป็น in-memory database ที่ทรงพลังซึ่งทุกโปรแกรมเมอร์อยากได้: RedisJSON และ RediSearch
RedisJSON นำ hierarchy มาให้ Hashes ดีมาก แต่ถ้าคุณอยาก embed hashes ใน hash ของคุณล่ะ? RedisJSON ครอบคลุมคุณโดยให้จัดเก็บ hierarchical data ใน JSON documents
ขณะเดียวกัน RediSearch ให้คุณ ค้นหา โครงสร้างข้อมูลที่คุณสนใจ แน่นอน คุณสร้าง manual indices ด้วย sets ได้ แต่วิธีนั้นจำกัดและ manual ยักษ์ RediSearch ให้คุณเขียน queries ไปยังข้อมูลที่คุณต้องการโดยตรง
รวมกัน RediSearch และ RedisJSON ทำให้ Redis เป็น document database ที่น่าสนใจ คุณได้ hierarchy ที่ต้องการ และความสามารถค้นหาสิ่งในมันที่คุณสนใจ Best of both worlds
จริงๆ เราคิดว่าการผสมผสานนี้อร่อยมาก เรากำลังรวมพวกมันเข้าด้วยกันและเรียกมันว่า RedisJSON
Redis OM สำหรับ Node.js
ภาษา query ของ RediSearch ทรงพลัง มากมาย อนุญาตให้คุณ search Hashes และ JSON documents ใน Redis แบบหลากหลายและซับซ้อน และตอนที่ฉันต้องการพลังทั้งหมด มันเก๋มาก แต่บางครั้งฉันไม่ต้องการพลังทั้งหมด และฉัน เป็น lazy developer—ฉันอยากให้มันง่ายที่สุด (และไม่ง่ายกว่านั้น)
การทำให้สิ่งต่างๆ ง่ายที่สุด คือสิ่งที่ฉันพยายามทำตอนเขียน Redis OM สำหรับ Node.js Redis OM ทำให้เพิ่ม Redis เข้า Node.js application ง่ายขึ้นโดย mapping hashes และ JSON documents ไปยัง classes ที่คุณกำหนด ไม่มีคำสั่งซับซ้อน แค่โค้ดบริสุทธิ์กับ fluent interface ดูเลย
Define an entity:
Create a new entity and save it:
Search for matching entities:
ตอนนี้ฉัน biased เพราะฉันเขียน library นี้ แต่ฉันคิดว่านั่นค่อนข้าง dadgum cool! มาดู syntax นี้ใกล้ชิดและเรียนรู้ว่ามันทำงานอย่างไร
วิธีการทำงาน
มี 4 คลาสที่คุณต้องสนใจใน Redis OM สำหรับ Node.js คือ Entity, Schema, Client, และ Repository
Entities คือคลาสที่คุณทำงานด้วย สิ่งที่ถูกสร้าง อ่าน อัปเดต และลบ สิ่งที่ถูกค้นหา คลาสไหนที่ extends Entity ก็เป็น entity ปกติคุณจะ define entity ด้วย single line of code แต่คุณสามารถเพิ่ม custom logic ได้ด้วย:
Schemas กำหนด fields บน entity ของคุณ types ของพวกเขา และวิธีที่พวกเขา mapped ภายในไป Redis โดย default entities map ไป Hashes ใน Redis แต่คุณสามารถ map ไป JSON documents ได้ด้วย:
เมื่อคุณสร้าง Schema มันจะ modify Entity ที่คุณส่งเข้าไป เพิ่ม getters และ setters สำหรับ properties ที่คุณกำหนด type ที่ getters และ setters ยอมรับและคืนค่า ถูกกำหนดด้วย property type ด้านบน
Clients เชื่อมคุณกับ Redis Client มีเมธอด open, close, และ execute raw commands ต่อ Redis คุณจะใช้ open และ close เป็นหลัก:
A Schema และ A Client จำเป็นสำหรับ instantiate Repository Repositories ให้วิธีอ่าน เขียน และลบ entities และวิธีค้นหาพวกเขา:
เมื่อเรามี repository เราสามารถใช้มัน create, read, update, และ delete entities ได้ นี่ฉันทำกับอัลบั้มโปรดของฉันโดย Mushroomhead:
เรายังสามารถใช้มันค้นหา entities ได้:
และสำหรับความสะดวกในการ copy-paste นี่คือตัวอย่างเป็น block โค้ดใหญ่:
และนั่นคือ Redis OM สำหรับ Node.js ใน ตามที่เขาบอก in a nutshell
สรุป
นี่คือภาพรวมเร็วๆ ของสิ่งที่ Redis OM สำหรับ Node.js ทำได้ ถ้าอยากเรียนรู้เพิ่ม มี tutorial นำคุณสร้าง simple service ด้วย Redis OM และถ้าอยากลึกกว่า (และคุณควร) ดู README และ API docs บน GitHub
โดยสิ่งนี้เป็นซอฟต์แวร์ใหม่ที่ยังไม่ได้ทดสอบในธรรมชาติ คุณ คือธรรมชาตินั้น โปรดลองใช้ Kick the tires ลองทำลายมัน ดูว่ามีอะไรและอาจมีอะไร และเมื่อคุณเจอบั๊กหรือคิดถึงฟีเจอร์ที่สมบูรณ์แบบ แจ้งฉันรู้โดยเปิด issue หรือส่ง pull request ความช่วยเหลือของคุณในการทำให้ Redis OM ดีกว่านี้ ได้รับการขอบคุณจากใจ Thanks!