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

Redis GEOADD: เพิ่มและจัดการสมาชิก Geospatial อย่างมีประสิทธิภาพ

ในบทเรียนนี้ เราจะเรียนรู้วิธีการสร้างและเพิ่มสมาชิกใน geospatial value ที่เก็บใน key โดยใช้คำสั่ง Redis GEOADD

คำสั่ง GEOADD

คำสั่งนี้เพิ่มสมาชิก geospatial ที่ระบุหนึ่งหรือหลายรายการใน geospatial value ที่เก็บใน key ค่า geospatial ไม่ใช่แค่ Sorted Set ที่ populate ด้วยคำสั่งนี้ สมาชิก geospatial จะถูกเพิ่มใน Sorted Set อย่างที่ทำให้สามารถดึงสมาชิกได้ภายหลังด้วยคำสั่ง query by radius คือ GEORADIUS และ GEORADIUSBYMEMBER

Sorted Set ถูก populate โดยเทคนิคที่เรียกว่า Geohash ในเทคนิคนี้ latitude และ longitude bits ถูก interleave เพื่อสร้าง unique 52-bit integer ซึ่งถูกเก็บเป็น score ของ name value ใน Sorted Set

สมาชิก geospatial ประกอบด้วย 3 ค่า (ข้อมูล) เกี่ยวกับตำแหน่ง คือ longitude, latitude, และ name ดังนั้นคำสั่งนี้รับ 3 อาร์กิวเมนต์สำหรับเพิ่มสมาชิก geospatial หนึ่งรายการ คือ longitude coordinates ตามด้วย latitude coordinates และสุดท้ายคือ name value มีข้อจำกัดของค่าพิกัด (longitude, latitude) ที่สามารถเพิ่มใน geospatial value ได้ ขีดจำกัดที่แน่นอนตาม EPSG:900913 / EPSG:3785 / OSGEO:41001 มีดังนี้:

  1. Longitude ที่ถูกต้อง: -180 ถึง 180 องศา
  2. Latitude ที่ถูกต้อง: -85.05112878 ถึง 85.05112878 องศา

จะคืนค่า error เมื่อคำสั่งพยายามเพิ่มพิกัดที่อยู่นอกขอบเขตที่ระบุ

หาก key มีอยู่ใน datastore สมาชิกที่ระบุทั้งหมดจะถูกเพิ่ม โดยข้ามสมาชิกที่มีอยู่แล้ว (อัปเดต score เท่านั้น) ใน Sorted Set มิฉะนั้น Sorted Set ใหม่จะถูกสร้างก่อนทำการ insert

Syntax

redis host:port> GEOADD <keyname> <longitude> <latitude> <name> [longitude latitude name ...]

Output

- (integer) value: แสดงจำนวนสมาชิกที่เพิ่มเข้า Sorted Set (ไม่นับสมาชิกที่มีอยู่แล้วซึ่งอัปเดต score อย่างเดียว)
- Error: หาก key มีอยู่แต่ค่าที่เก็บไม่ใช่ Sorted Set ที่ populate ด้วย GEOADD

ตัวอย่าง

Redis GEOADD: เพิ่มและจัดการสมาชิก Geospatial อย่างมีประสิทธิภาพ

อ้างอิง

  1. GEOADD Command Docs

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

<- Geo Commands