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

Redis GEORADIUSBYMEMBER: ค้นหาข้อมูล Geospatial ในพื้นที่จาก Member

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

คำสั่ง GEORADIUSBYMEMBER

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

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

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

Optional Arguments

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

  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> GEORADIUSBYMEMBER <keyname> <member> <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 GEORADIUSBYMEMBER: ค้นหาข้อมูล Geospatial ในพื้นที่จาก Member

อ้างอิง

  1. Redis GEORADIUSBYMEMBER Command Docs

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

<- Geo Commands