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

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

การบริจาคเลือดเป็นวิธีที่ง่ายและปลอดภัยในการช่วยชีวิตผู้อื่น แต่กระบวนการจับคู่ผู้บริจาคกับผู้ป่วยที่มีกรุ๊ปเลือดตรงกันยังคงมีความซับซ้อนและใช้เวลานาน เวลาเป็นปัจจัยสำคัญที่สุดในการบริจาคเลือด ทำให้การจับคู่ที่รวดเร็วและแม่นยำเป็นสิ่งจำเป็นอย่างยิ่ง

กระบวนการที่มีประสิทธิภาพมากเท่าไหร่ ชีวิตที่ได้รับการช่วยชีวิตก็จะมากขึ้นเท่านั้น บัญญู กอร์ทิวัดา (Bhanu Korthiwada) ได้รับมือกับความท้าทายนี้โดยสร้างแอปพลิเคชัน Zindagi ซึ่งเร่งความเร็วกระบวนการบริจาคเลือดทั้งหมดโดยการจับคู่ผู้บริจาคกับผู้ป่วยที่เหมาะสมที่สุดได้อย่างทันท่วงที

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

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

มาเรียนรู้กันว่าบัญญูสร้างแอปพลิเคชันนี้อย่างไร แต่ก่อนจะเจาะลึกรายละเอียด เรายังมีแอปพลิเคชันน่าสนใจอีกมากมายบน Redis Launchpad ให้สำรวจกันได้

อย่าลืมไปดูหลังจากอ่านบทความนี้เสร็จนะครับ!

วิธีสร้างแอปที่เชื่อมต่อผู้บริจาคเลือดกับผู้ป่วย

  1. คุณจะสร้างอะไร?
  2. สิ่งที่คุณต้องเตรียม
  3. สถาปัตยกรรม
  4. เริ่มต้นใช้งาน
  5. วิธีใช้แอปพลิเคชัน
  6. หลักการทำงาน

1. คุณจะสร้างอะไร?

คุณจะสร้างแอปพลิเคชันที่จับคู่ผู้บริจาคเลือดกับผู้ป่วยที่มีกรุ๊ปเลือดตรงกัน ซึ่งจะส่งเสริมกระบวนการบริจาคเลือดให้ราบรื่นและมีประสิทธิภาพมากขึ้น ประหยัดเวลาเพื่อช่วยชีวิต

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

พร้อมเริ่มต้นแล้วหรือยัง?

ดี เริ่มเลยครับ!

2. สิ่งที่คุณต้องเตรียม

RedisJSON: ใช้มาตรฐาน ECMA-404 สำหรับการแลกเปลี่ยนข้อมูล JSON เป็นชนิดข้อมูลพื้นฐาน (native data type)

RediSearch: ให้การสืบค้นขั้นสูง ดัชนีรอง (secondary indexing) และการค้นหาข้อความเต็ม (full-text search) สำหรับ Redis

Redis Pub/Sub: ใช้สำหรับการส่งข้อความเหตุการณ์ (event messaging) สามารถส่งข้อความไปยังผู้สมัครรับ (subscribers) จำนวนมากบนช่องทาง (channel) เดียวกัน

Telerik: ให้ชุดเครื่องมือซอฟต์แวร์สำหรับพัฒนาเว็บ มือถือ เดสก์ท็อป และอื่นๆ

Blazor: เฟรมเวิร์กเว็บโอเพนซอร์สฟรี ที่ให้นักพัฒนาสร้างเว็บแอปด้วย C# และ HTML

.NET Core Runtime – ให้บริการพื้นฐานสำหรับแอปที่เชื่อมต่ออินเทอร์เน็ต

3. สถาปัตยกรรม

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

4. เริ่มต้นใช้งาน

ข้อกำหนดเบื้องต้น

  • .NET Core – v5.0.x (เวอร์ชันแพทช์ล่าสุด)
  • Visual Studio 2019 16.9 หรือ Visual Studio Code 1.55
  • Docker – v19.03.13 (ไม่บังคับ)
  • Auth0:
    • Domain
    • Client ID
    • Client Secret
  • SMTP (ไม่บังคับ): ฟีเจอร์เสริม มีผู้ให้บริการหลายราย เช่น SendGrid by Twilio, Amazon SES, Mail Jet, Mailgun
  • SMS: โค้ดฟีเจอร์ SMS ยังไม่ได้นำไปใช้ แต่มีแผนจะทำในอนาคต ผู้ให้บริการยอดนิยม ได้แก่ Msg91, Twilio

การติดตั้งในเครื่องด้วย Docker

ข้อกำหนดเบื้องต้น

  • Docker
  • Docker Compose

ขั้นตอนที่ 1: Clone โครงการ

git clone https://github.com/redis-developer/rediszindagi

อัปเดตไฟล์

.env
ด้วยรายละเอียด Auth0 และ SMTP

ขั้นตอนที่ 2: ตรวจสอบไฟล์ Docker Compose

ไฟล์ Compose นี้กำหนดบริการหลัก 2 ตัว:

  • Redismod
  • rediszindagi

Redismod มีโมดูลในตัว เช่น RedisJSON และ RediSearch ที่ใช้ในโครงการนี้ คุณต้องส่งตัวแปรสภาพแวดล้อมของ Auth0 หลายตัว SMTP เป็นตัวเลือกเสริม สำหรับความต่อเนื่อง (persistence) ได้เพิ่ม Docker volumes mount และแอปเปิดพอร์ต 80

รันคำสั่ง

docker-compose up -d
จากเทอร์มินัล/คอมมานด์พรอมต์

เข้าถึงแอปพลิเคชันผ่าน localhost ได้เลย

5. วิธีจัดเก็บข้อมูล

  • ข้อมูลคำขอถูกจัดเก็บในคีย์ (keys) และชนิดข้อมูลหลายแบบ
    • สำหรับแต่ละคำขอ:
      • ID:
        Guid
        เป็นสตริง
      • กรุ๊ปเลือด, ประเภทการบริจาค, ความสำคัญ, สถานะ:
        C# ENUM
  • Redis JSON
    • User Profile Key: prefix:
      USER_PROFILE
      postfix: Auth0 name identifier
    • Request Key: prefix:
      BLOOD_REQUEST
      postfix: Guid string
  • Redis Publish
    • Requests: คำขอเลือดใหม่จะเผยแพร่ request id เป็นข้อความไปยังหัวข้อ
      URN:BLOODREQUESTS:NEW

วิธีการเข้าถึงข้อมูล:

  • ใช้ C# Repository pattern ทุกการเรียกจะสร้างอินสแตนซ์ด้วย Connection Multiplexer

6. วิธีใช้แอปพลิเคชัน

สร้างบัญชีหรือเข้าสู่ระบบ

เพื่อใช้ประโยชน์เต็มที่ ผู้บริจาคเลือดต้องสร้างบัญชี ทำได้ที่แดชบอร์ดหลักโดยกlik 'Register Now'

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

บริจาคเลือด

กดปุ่มบริจาคเลือดบนแถบนำทางด้านบน จะมีฟิลด์ให้กรอกข้อมูลกรุ๊ปเลือดและปริมาณที่ต้องการบริจาค

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

รับคำขอการบริจาคเลือด

หลังสร้างบัญชีแล้ว ผู้ป่วยที่เข้ากับกรุ๊ปเลือดของคุณจะได้รับแจ้งเตือน พวกเขาสามารถส่งคำขอการบริจาคได้ เข้าดูรายการคำขอทั้งหมดที่แท็บ 'Requests' บนแถบนำทาง

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

สรุป: เชื่อมโยงผู้ป่วยกับผู้บริจาคเลือดเพื่อช่วยชีวิตด้วย Redis

การเข้าถึงเลือดอย่างรวดเร็วเป็นตัวแปรสำคัญระหว่างชีวิตและความตายของผู้ป่วยหลายคน การจับคู่ผู้บริจาคกับผู้ป่วยที่เหมาะสมมักใช้เวลานาน ทุกวินาทีที่ผ่านไปก็เสี่ยงต่อชีวิตผู้ป่วย แอปพลิเคชันของบัญญูช่วยกำจัดอุปสรรคนี้ด้วยความสามารถของ Redis ในการส่งข้อมูลระหว่างส่วนประกอบด้วยความเร็วแสง

การส่งข้อมูลอย่างมีประสิทธิภาพทำให้ Zindagi จับคู่ผู้บริจาคกับผู้ป่วยที่ตรงตามเกณฑ์ได้อย่างรวดเร็ว เร่งกระบวนการบริจาคเลือดทั้งหมด ทำให้ผู้บริจาคและผู้ป่วยโต้ตอบกันแบบเรียลไทม์และจัดการบริจาคได้

หัวใจของแอปพลิเคชันคือความสามารถในการรวมทุกฝ่ายเข้าด้วยกัน ให้ทิศทางที่ดีที่สุดสำหรับความก้าวหน้า หมายถึงการบริจาคมากขึ้น เวลาที่เสียไปน้อยลง และประสบการณ์ที่ราบรื่นสำหรับทุกคน

หากต้องการเข้าใจภาพรวมมากขึ้น ดูวิดีโอ YouTube นี้ได้เลย หากชอบบทความนี้ อย่าลืมไปสำรวจ Redis Launchpad ที่มีแอปพลิเคชันนวัตกรรมมากมายที่สร้างผลกระทบต่อชีวิตประจำวัน

มีแอปติดตามรถบัสแบบเรียลไทม์บนแผนที่ แอปป้องกันขาดแคลนวัสดุในโรงพยาบาลประเทศใน vías พัฒนา และอีกมากมายรอคุณค้นพบ

ไปดูกันเลย!

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

ผู้สร้างแอปคือใคร?

บัญญู กอร์ทิวัดา (Bhanu Korthiwada)

สร้างแอปจับคู่ผู้บริจาคเลือดแบบเรียลไทม์ด้วย Redis

บัญญูเป็นวิศวกรซอฟต์แวร์มืออาชีพ ปัจจุบันทำงานเป็นที่ปรึกษาอาวุโส (senior consultant) ที่ ADP หากต้องการติดตามโครงการล่าสุดของเขา ติดตาม GitHub ของเขาได้เลย