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

Redis OM .NET: Fluent API สำหรับการผสานรวม .NET และ Redis อย่างราบรื่น

Fluent API และ object model สำหรับ .NET และ Redis

Redis เป็นเทคโนโลยีเก๋ๆ ที่ถูกชื่นชอบโดยล้านๆ นักพัฒนา 2 เหตุผล: ความเร็วและความเรียบง่าย Redis ให้ native interface ที่直觉的 จัดระเบียบอย่างเป็นตรรกะเข้าโครงสร้างข้อมูลที่โปรแกรมเมอร์รู้จักแล้ว นอกจากนี้ โครงสร้างเหล่านั้นใช้งานง่ายและ optimize ได้อย่างลุ่มลึก มันคือการผสมผสานความเร็วและความเรียบง่ายสูงสุดที่เรามุ่งมั่นด้วยการปล่อย client library ใหม่สำหรับ .NET คือ Redis OM

Redis OM .NET คืออะไร?

Redis OM คือ object mapping และมากกว่านั้นสำหรับ Redis แรงจูงใจเบื้องหลัง Redis OM คือการตอบคำถาม “นักพัฒนาจะได้ประโยชน์สูงสุดจาก Redis โดยไม่ต้องเรียนคำสั่ง Redis ทั้งหมดอย่างไร?” สำหรับ preview release ครั้งแรก เรากำลังมุ่งตอบคำถาม “เราจะจัดเก็บและค้นหา domain objects ของเราใน Redis ได้อย่างไร?” Preview release ของ Redis OM .NET คือ object mapper, secondary index builder และ simplified powerful query builder ทั้งหมดนี้มุ่งช่วยให้คุณจัดเก็บและค้นหา domain objects ของคุณกับ Redis

Redis modules

Module API เป็น game changer สำหรับ Redis โมดูลเพิ่มความยืดหยุ่นทREMENDOUS ให้แพลตฟอร์มพร้อมให้ฟีเจอร์สำคัญบางอย่างสำหรับ Redis RedisJSON โดยเฉพาะปลดล็อกฟังก์ชันมหาศาล โดยเฉพาะเรื่อง secondary indexing และ document modeling แม้ Redis OM จะทำงานได้ดีกับ core Redis Redis OM จริงๆ แล้ว hit its stride เมื่อคุณเพิ่ม RedisJSON ใช้ประโยชน์เต็มที่จาก RedisJSON เพื่อสร้าง API ที่ทรงพลังและครบครันสำหรับการสร้างโมเดล objects และ query พวกเขาใน Redis

ความสามารถ

Preview version ของ Redis OM .NET มี 4 ความสามารถหลัก:

  1. Object modeling
  2. Index creation
  3. Fluent queries
  4. Fluent aggregations

วิธีการทำงาน

ก่อนเริ่มใช้ Redis OM คุณต้องติดตั้ง package ในโปรเจกต์ ทำได้โดยรัน

dotnet add package Redis.OM
การเชื่อมต่อหลักภายใน Redis OM library อยู่ใน
RedisConnectionProvider
Provider นี้ให้การเข้าถึง 3 objects ที่แตกต่างกันที่คุณใช้สื่อสารกับ Redis:

  1. IRedisConnection
    ให้คุณ interface กับ Redis โดยตรงใช้เมธอด
    Execute
    และ
    ExecuteAsync
  2. RedisCollection<T>
    คือ collection ของ objects ที่มี generic type Interface นี้ให้ fluent query API
  3. RedisAggregationSet<T>
    ให้คุณสร้างและ execute aggregation pipelines ใน Redis ด้วย Fluent API

การเชื่อมต่อกับ Redis

เพื่อเชื่อมต่อ Redis OM กับ Redis ใน ASP.NET Core คุณควร inject instance ของ

RedisConnectionProvider
เป็น singleton ทำได้โดยใช้ Redis URI ถ้าคุณใช้ .NET 6 หมายถึงเปิดไฟล์
program.cs 
และเพิ่ม:

สำหรับ .NET 5 ที่ใช้ Startup.cs คุณสามารถเพิ่มต่อไปนี้ใน

Startup.ConfigureServices
:

การสร้างโมเดลและค้นหา objects

RedisJSON ให้คุณจัดเก็บ JSON objects ใน Redis แบบ native และ query objects เหล่านั้น แต่เพื่อ query JSON ของคุณ คุณต้อง define indexes ก่อน เพื่อทำให้กระบวนการนี้ง่ายขึ้น เราได้นำ declarative model ใน Redis OM .NET มา ให้คุณกำหนด indexes ผ่าน declarative interface ถ้าคุณต้องการ declare class เพื่อจัดเก็บใน Redis และ index properties ของมัน คุณตกแต่ง class ด้วย attribute

Document
และแตกแต่ง properties ตัวละด้วย attributes
Indexed
หรือ
Searchable
Indexed
บ่งชี้ standard index ในขณะที่
Searchable
ใช้ได้กับ strings เท่านั้น และหมายความว่า property นั้นจะ queryable ด้วย full-text search ต่อไป คุณสามารถสร้าง index ใน Redis โดยส่ง type ที่ตกแต่งใหม่เข้าไปในเมธอด
IRedisConnection.CreateIndex
ดังนั้น เช่น ถ้าคุณอยาก declare Customer class พร้อม index คุณจะทำอย่างนี้:

การ Query

ด้วย index ที่สร้างแล้ว คุณสามารถใช้

RedisCollection<T>
query objects ใน Redis ดังนั้น ถ้าคุณมี John จัดเก็บใน Redis เป็น Customer object คุณสามารถ query เขาได้:

คุณยังสามารถทำ range queries ได้ง่ายๆ ตัวอย่าง มาหา Customers ทั้งหมดที่ยังไม่ถึงอายุเกษียณ:

ด้วย

RedisCollection
และ RedisJSON คุณสามารถสร้าง rich complex queries ได้เหมือนปกติใน LINQ และ Redis OM จะจัดการการแปลงเป็นภาษา query ของ Redis ให้คุณ

Aggregations

นอกจาก querying แล้ว คุณสามารถใช้ Redis Aggregations สร้าง aggregation pipelines ที่ทำอะไรก็ได้ ตัวอย่าง สมมติคุณอยากหาอายุของแต่ละ customer ในอีก 3 ปี คุณทำได้ด้วย arithmetic operation ง่ายๆ ภายใน

Apply
expression ซึ่งจะแปลงเป็น aggregation pipeline ที่ formatted อย่างถูกต้องใน Redis:

คุณยังสามารถ group records และคำนวณ summary statistics ได้ ดังนั้นถ้าคุณอยาก group customers โดยนามสกุล คุณสามารถคำนวณ summary statistics ได้ ตัวอย่าง นี่คือวิธีคำนวณ average age:

สรุป

นี่คือภาพรวมสั้นๆ ของความสามารถ Redis OM สำหรับ .NET ถ้าอยากเรียนรู้เพิ่มเติม คุณสามารถดู tutorial และอ่าน API docs เราวางแผนเพิ่มฟีเจอร์มากขึ้นใน Redis.OM เร็วๆ นี้ และเพื่อนั้น เราอยากได้ feedback จากชุมชน มาลองใช้ดู หากเจอบั๊กหรือคิดถึงฟีเจอร์ที่อยากเพิ่ม เปิด issue ใน GitHub และโดยธรรมชาติ เรายินดีต้อนรับ contributions จากชุมชนเสมอ PRs welcome :)