Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Sử dụng Redis GEORADIUS tìm dữ liệu địa lý trong khu vực xác định

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách lấy các phần tử của giá trị địa lý (geospatial) được lưu trữ tại một khóa, mà rơi vào một khu vực cụ thể. Để làm điều này, chúng ta sẽ sử dụng lệnh GEORADIUS của Redis.

Lệnh GEORADIUS

Lệnh này dùng để trả về một hoặc nhiều thành viên (member) của giá trị địa lý (Sorted Set) được lưu trữ tại một khóa, mà nằm bên trong ranh giới của khu vực được tính toán bằng kinh độ, vĩ độ và bán kính (radius). Khu vực này được tính bằng cách dùng kinh độ, vĩ độ được chỉ định làm tâm của hình tròn và bán kính theo đơn vị được chỉ định làm bán kính của hình tròn.

Bán kính được chỉ định bằng một trong các đơn vị sau:

  1. m cho mét (mặc định).
  2. km cho kilômét.
  3. mi cho dặm (miles).
  4. ft cho feet.

Các đối số tùy chọn

Lệnh GEORADIUS của Redis chấp nhận các đối số tùy chọn sau:

  1. WITHDIST: Trả về khoảng cách của các phần tử trả về từ tâm hình tròn. Đơn vị khoảng cách giống đơn vị của đối số bán kính.
  2. WITHCOORD: Trả về tọa độ kinh độ, vĩ độ của tất cả các phần tử trả về.
  3. WITHHASH: Trả về chuỗi Geohash thô (số nguyên 52-bit không dấu) của tất cả các phần tử trả về. Chuỗi Geohash này chính là score của một phần tử trong sorted set.
  4. ASC: Trả về các phần tử theo thứ tự sắp xếp từ gần đến xa, liên quan đến tâm. Mặc định các phần tử được trả về theo thứ tự không sắp xếp.
  5. DESC: Trả về các phần tử theo thứ tự sắp xếp từ xa đến gần, liên quan đến tâm.
  6. COUNT <count>: Trả về các phần tử giới hạn ở count phần tử khớp đầu tiên. Mặc định trả về tất cả phần tử khớp.

Giá trị trả về

Lệnh này trả về phản hồi mảng với các loại giá trị sau:

  1. Nếu các đối số tùy chọn [WITH*] không được chỉ định, lệnh trả về một mảng chứa tên các phần tử.
  2. Nếu các tùy chọn WITHCOORD, WITHDIST, WITHHASH được chỉ định, lệnh trả về một mảng các mảng (array of arrays), trong đó mỗi mảng con đại diện cho một phần tử đơn lẻ. Phần tử đầu tiên trong mảng con luôn là tên của phần tử trả về và các thông tin khác được trả về theo thứ tự sau:
    1. Khoảng cách từ tâm dưới dạng số thực, cùng đơn vị với bán kính.
    2. Số nguyên geohash.
    3. Tọa độ dưới dạng mảng 2 phần tử x,y (kinh độ, vĩ độ).

Nil được trả về khi khóa không tồn tại và lỗi được trả về khi khóa tồn tại nhưng giá trị lưu trữ tại khóa không phải là kiểu sorted set được populate bằng lệnh GEOADD.

Cú pháp:

redis host:port> GEORADIUS <tên_khóa> <kinh_độ> <vĩ_độ> <bán_kính> [UNIT] [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

Đầu ra:

- (mảng) phản hồi, đại diện cho các phần tử của giá trị địa lý.
- Nil, nếu khóa không tồn tại.
- Lỗi, nếu khóa tồn tại và giá trị lưu trữ tại khóa không phải là sorted set được populate bằng GEOADD.

Ví dụ:

Sử dụng Redis GEORADIUS tìm dữ liệu địa lý trong khu vực xác định

Tài liệu tham khảo:

  1. Tài liệu lệnh Redis GEORADIUS

Trên đây là tất cả về cách lấy các phần tử của giá trị địa lý được lưu trữ trong kho dữ liệu Redis, mà rơi vào khu vực cụ thể. Nếu bạn thấy hữu ích, hãy chia sẻ suy nghĩ của bạn trong phần bình luận và lan tỏa cho người khác nhé.

<- Các lệnh Geo