Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

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

$
0
0

จากการแบ่งปันเรื่อง 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 1997

Trending Articles