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

Redis GEORADIUS: ค้นหาข้อมูล Geospatial ในพื้นที่ที่กำหนด

ในบทเรียนนี้ เราจะเรียนรู้วิธีการดึงสมาชิกของ geospatial value ที่เก็บใน key ซึ่งอยู่ในพื้นที่เฉพาะ โดยใช้คำสั่ง Redis GEORADIUS

คำสั่ง GEORADIUS

คำสั่งนี้คืนค่าสมาชิกหนึ่งหรือหลายรายการของ geospatial value (Sorted Set) ที่เก็บใน key ซึ่งอยู่ภายในขอบเขตของพื้นที่ที่คำนวณจาก longitude, latitude และ radius arguments พื้นที่นี้คำนวณโดยใช้ longitude, latitude ที่ระบุเป็นจุดศูนย์กลางของวงกลม และ radius ในหน่วยที่ระบุเป็นรัศมีของวงกลม

Radius ระบุโดยใช้หน่วยดังต่อไปนี้:

  1. m สำหรับเมตร (default)
  2. km สำหรับกิโลเมตร
  3. mi สำหรับไมล์
  4. ft สำหรับฟุต

Optional Arguments

คำสั่ง GEORADIUS รับอาร์กิวเมนต์เพิ่มเติมดังนี้:

  1. WITHDIST: คืนค่าระยะห่างของสมาชิกที่คืนจากจุดศูนย์กลาง หน่วยของระยะห่างเหมือนหน่วยของ radius argument
  2. WITHCOORD: คืนค่าพิกัด longitude, latitude ของสมาชิกที่คืนทั้งหมด
  3. WITHHASH: คืนค่า raw Geohash string (52-bit unsigned integer) ของสมาชิกที่คืนทั้งหมด Geohash string นี้คือ score ของสมาชิกใน Sorted Set
  4. ASC: คืนค่าสมาชิกจากใกล้สุดไปไกลสุด ตามลำดับจากจุดศูนย์กลาง โดย default คืนค่าแบบ unsorted
  5. DESC: คืนค่าสมาชิกจากไกลสุดไปใกล้สุด ตามลำดับจากจุดศูนย์กลาง
  6. COUNT <count>: จำกัดจำนวนสมาชิกที่คืนเป็น count รายการแรกที่ตรงเงื่อนไข โดย default คืนค่าทั้งหมดที่ตรง

Return Values

คำสั่งนี้คืนค่า array reply ด้วยประเภทค่าดังนี้:

  1. หากไม่ระบุ optional argument [WITH*] จะคืนค่า array ที่มีชื่อสมาชิก
  2. หากระบุ WITHCOORD, WITHDIST, WITHHASH จะคืนค่า array of arrays โดยแต่ละ sub array แทนสมาชิกเดียว องค์ประกอบแรกคือชื่อสมาชิกเสมอ และข้อมูลอื่นๆ คืนค่าตามลำดับ:
    1. ระยะห่างจากจุดศูนย์กลางเป็น floating-point number ในหน่วยเดียวกับ radius
    2. Geohash integer
    3. พิกัดเป็น array 2 รายการ x,y (longitude, latitude)

คืนค่า Nil เมื่อ key ไม่มีอยู่ และคืนค่า error เมื่อ key มีอยู่แต่ค่าที่เก็บไม่ใช่ Sorted Set datatype ที่ populate ด้วย GEOADD command

Syntax

redis host:port> GEORADIUS <keyname> <longitude> <latitude> <radius> [UNIT] [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

Output

- (array) reply: แสดงสมาชิกของ geospatial values
- Nil: หาก key ไม่มีอยู่
- Error: หาก key มีอยู่แต่ค่าที่เก็บไม่ใช่ Sorted Set ที่ populate ด้วย GEOADD

ตัวอย่าง

Redis GEORADIUS: ค้นหาข้อมูล Geospatial ในพื้นที่ที่กำหนด

อ้างอิง

  1. Redis GEORADIUS Command Docs

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

<- Geo Commands