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