Rumah >pangkalan data >Redis >Redis jenis data khas Geospatial

Redis jenis data khas Geospatial

WBOY
WBOYke hadapan
2022-10-12 16:21:351649semak imbas

Dalam artikel sebelumnya "Redis strim jenis data khas", saya memperkenalkan anda kepada kandungan yang berkaitan tentang strim jenis data Artikel ini membawakan anda Redis Satu lagi jenis data Geospatial, mari kita lihat, saya harap ia akan membantu semua orang.

Redis jenis data khas Geospatial

Pembelajaran yang disyorkan: Tutorial video Redis

Kata Pengantar

Kita semua tahu Redis Menyediakan pelbagai jenis data, termasuk empat yang istimewa: BitMap, HyperLogLog, Geospatial dan Stream.

Hari ini kita akan bercakap secara terperinci tentang Geospatial, salah satu daripada empat jenis data khas Redis

Senario aplikasi: Senario untuk menyimpan maklumat lokasi geografi, seperti Didi ride-hailing; >

Ikhtisar Pengenalan

Hak cipta kepunyaan pengarang. Untuk pencetakan semula komersial, sila hubungi pengarang untuk mendapatkan kebenaran Untuk pencetakan semula bukan komersial, sila nyatakan sumbernya.

Redis Geospatial ialah jenis data baharu yang ditambahkan dalam versi Redis 3.2 Ia digunakan terutamanya untuk menyimpan maklumat lokasi geografi dan beroperasi pada maklumat yang disimpan.

Dalam kehidupan seharian, kami semakin bergantung pada pencarian "restoran berdekatan" dan memanggil teksi pada apl panggilan teksi, yang semuanya tidak dapat dipisahkan daripada aplikasi Perkhidmatan Berasaskan Lokasi (LBS). Data yang diakses oleh aplikasi LBS ialah satu set maklumat longitud dan latitud yang dikaitkan dengan orang atau benda, dan jika julat longitud dan latitud bersebelahan perlu disoal, GEO sangat sesuai untuk aplikasi dalam senario perkhidmatan LBS.

Pelaksanaan dalaman

GEO sendiri tidak mereka bentuk struktur data asas baharu, tetapi secara langsung menggunakan jenis koleksi Set Isih.

Jenis GEO menggunakan kaedah pengekodan GeoHash untuk menukar longitud dan latitud kepada skor berat elemen dalam Set Isih Dua mekanisme utama ialah "pembahagian selang peta dua dimensi" dan "pengekodan selang". Selepas set longitud dan latitud jatuh dalam selang tertentu, ia diwakili oleh nilai pengekodan selang dan nilai pengekodan digunakan sebagai skor berat elemen Set Isih.

Dengan cara ini, kita boleh menyimpan longitud dan latitud ke dalam Set Isih dan menggunakan ciri "carian julat tersusun mengikut berat" yang disediakan oleh Set Isih untuk melaksanakan fungsi "cari berdekatan" yang kerap digunakan dalam LBS keperluan perkhidmatan.

Arahan biasa

# 存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中。
GEOADD key longitude latitude member [longitude latitude member ...]
# 从给定的 key 里返回所有指定名称(member)的位置(经度和纬度),不存在的返回 nil。
GEOPOS key member [member ...]
# 返回两个给定位置之间的距离。
GEODIST key member1 member2 [m|km|ft|mi]
# 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
Senario aplikasi

Teksi Didi

Di sini kami mengambil senario panggilan teksi Didi sebagai contoh untuk memperkenalkan cara menggunakan arahan GEO: GEOADD dan GEORADIUS.

Dengan mengandaikan bahawa ID kenderaan ialah 33 dan lokasi latitud dan longitud ialah (116.034579, 39.030452), kita boleh menggunakan koleksi GEO untuk menyimpan latitud dan longitud semua kenderaan, dan kunci koleksi ialah cars:locations .

Laksanakan arahan berikut untuk menyimpan kedudukan longitud dan latitud semasa kenderaan dengan nombor ID 33 ke dalam koleksi GEO:

GEOADD cars:locations 116.034579 39.030452 33
Apabila pengguna ingin mencari temu janji dalam talian berdekatan dengannya Semasa memandu, aplikasi LBS boleh menggunakan arahan GEORADIUS.

Sebagai contoh, apabila aplikasi LBS melaksanakan perintah berikut, Redis akan mencari maklumat kenderaan dalam jarak 5 kilometer berpusat pada longitud dan latitud ini berdasarkan maklumat latitud dan longitud pengguna input (116.054579, 39.030452), dan kembali kepada aplikasi LBS.

GEORADIUS cars:locations 116.054579 39.030452 5 km ASC COUNT 10
Pembelajaran yang disyorkan:

Tutorial video Redis

Atas ialah kandungan terperinci Redis jenis data khas Geospatial. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Redis aliran jenis data khasArtikel seterusnya:Redis aliran jenis data khas