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

Redis GEOHASH: Lấy chuỗi Geohash cho nhiều thành viên địa lý

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách lấy chuỗi Geohash của một hoặc nhiều phần tử của một giá trị địa lý được lưu trữ tại khóa. Để làm điều này, chúng ta sẽ sử dụng lệnh GEOHASH của Redis.

Lệnh GEOHASH

Lệnh này dùng để trả về chuỗi Geohash hợp lệ của một hoặc nhiều phần tử được chỉ định trong giá trị địa lý được lưu trữ tại một khóa. Giá trị địa lý được biểu diễn bởi giá trị sorted set, được populate (điền dữ liệu) bằng lệnh GEOADD.

Redis biểu diễn vị trí (kinh độ, vĩ độ) của phần tử địa lý bằng một biến thể của kỹ thuật Geohash, nơi các bit vĩ độ và kinh độ được xen kẽ (interleaved) để tạo thành một số nguyên 52-bit duy nhất. Mã hóa này cũng khác biệt so với chuẩn vì tọa độ min/max ban đầu dùng trong quá trình encode/decode khác nhau. Tuy nhiên, lệnh này trả về giá trị chuỗi Geohash chuẩn.

Một chuỗi Geohash chuẩn có các đặc tính sau:

  1. Gồm 11 ký tự.
  2. Có thể dùng chúng trên geohash.org.
  3. Chuỗi có tiền tố (prefix) tương tự thì gần nhau, nhưng ngược lại không đúng, có thể chuỗi tiền tố khác nhau vẫn gần nhau.
  4. Chúng có thể rút gọn bằng cách bỏ ký tự từ bên phải. Sẽ mất độ chính xác nhưng vẫn chỉ đến cùng khu vực.

Một mảng 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> GEOHASH <tên_khóa> <thành_viên> [thành_viên...]

Đầu ra:

- (mảng) giá trị, đại diện cho danh sách chuỗi Geohash.
- 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ụ:

Redis GEOHASH: Lấy chuỗi Geohash cho nhiều thành viên địa lý

Tài liệu tham khảo:

  1. Tài liệu lệnh GEOHASH

Trên đây là tất cả về cách lấy chuỗi Geohash của một hoặc nhiều phần tử của giá trị địa lý được lưu trữ trong kho dữ liệu Redis. 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