Quantcast
Viewing all articles
Browse latest Browse all 2063

ตอบคำถามการนำ Redis มาใช้งาน

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

จากการแบ่งปันเรื่อง NoSQL ซึ่งทำการแนะนำ key-value database ไป
นั่นก็คือ Redis นั่นเอง และก็มีคำถามเกี่ยวกับ use case
สำหรับการนำ Redis มาใช้งาน ว่ามีอะไรบ้าง
จึงทำการสรุปคำตอบแบบคร่าว ๆ ไว้นิดหน่อยดังนี้

ถ้า use case ทั่วไปประกอบไปด้วย

  • caching data เพื่อลดการเข้าถึง database หลัก
  • การเก็บข้อมูลที่มีอายุ (expired time) เช่น session และ token ต่าง ๆ

แต่ถ้าลงไปดูถึง Data structure ที่ Redis มีนั้น

ก็สามารถแบ่งแยก use case ลงไปได้อีกดังนี้

  • String => caching data, counter ต่าง ๆ พวก global id, rate limit และ distributed locking
  • List => สำหรับจัดการข้อมูล list ที่ซ้ำ ซึ่งเก็บ list ของข้อมูล รวมทั้งนำมาใช้งาน queue ได้ เช่น lpush และ rpop เป็นต้น (FIFO) หรือไปใช้ pup/sub แทนได้
  • Set => สำหรับข้อมูล list ที่ไม่ซ้ำ ดังนั้นเอามาใช้งานเรื่องการ intersect และ union ข้อมูลได้เลย
  • SortedSet => คือ set ที่เรียงลพดับให้แล้ว ทำให้ไม่ต้องมาเรียงลำดับเองตอนใช้งาน นำมาใช้ในระบบ ranking ได้แบบง่าย ๆ เช่นพวก leader board หรือ stat/report ต่าง ๆ
  • Geolocation => เก็บและค้นหาข้อมูล location ได้อีกด้วย
  • Stream => สำหรับจัดการงาน stream data ได้เช่น log หรือ time series data ได้เลย หรือ Big data ก็ทำได้ เช่น Hyperloglog, t-digest และ Top-k เป็นต้น
  • ล่าสุดสนับสนุน Vector อีกด้วย

แต่สิ่งที่ต้องเข้าใจคือ Redis ทำงานบน memory เป็นหลัก
แต่ก็มีการ snapshot ลง file system ด้วย อยู่ที่การ config
ดังนั้นข้อมูลอาจจะสูญหายได้ถ้าระบบมีปัญหา
จึงอาจจะต้องดูว่า จะวาง architecture ของ Redis เพิ่มเติมอย่างไร
เช่น master-slave, sentinal และ cluster เป็นต้น


Viewing all articles
Browse latest Browse all 2063

Trending Articles