จากงานเดิมใช้งาน RediSearch เกี่ยวการค้นหาข้อมูล (Full text search) ไปแล้ว
ต่อมามี use case ต้องทำการค้นหาข้อมูล Geolocation (lat,lng) นั่นเอง
โดยมีความต้องการดังนี้

  • ยังค้นหาแบบ full text search ในข้อมูลจาก property ต่าง ๆ ได้
  • หาข้อมูลที่อยู่ใกล้
  • เรียงลำดับจากใกล้ไปไกลได้
  • กำหนดจำนวนข้อมูลที่ต้องการ

มาดูกันว่าทำอย่างไรได้บ้างใน Redis นั่นเอง

ขั้นตอนการออกแบบและทดลองใน Redis เป็นดังนี้

ขั้นตอนที่ 1 ทำการเตรียมข้อมูลที่ต้องการค้นหา

ประกอบไปด้วย property ต่าง ๆ ที่ต้องการเก็บเพื่อค้นหา และ กรองข้อมูล
รวมทั้งข้อมูล location (lat, lng) นั่นเอง
แต่ใน Redis + GEO type นั้นเป็น lng, lat นะ ตรงนี้ต้องระวัง

ในส่วนนี้เก็บข้อมูลในรูปแบบของ HASH ดังนี้

ขั้นตอนที่ 2 ทำการสร้าง index เพื่อทำการค้นหา

ขั้นตอนที่ 3 ทำการค้นหาผ่าน FT.SEARCH

ตรงนี้จะซับซ้อนขึ้นมาหน่อย เนื่องจากต้องการ

  • ค้นหา location ที่อยู่ในระยะทางที่ต้องการ
  • ทำการเรียงลำดับตามระยะทางได้ด้วย

เพียงเท่านี้ก็ใช้งาน RediSearch สำหรับ use case นี้ได้แล้ว