Home  >  Article  >  Database  >  How to use Redis special data type Geospatial

How to use Redis special data type Geospatial

PHPz
PHPzforward
2023-05-26 14:55:06565browse

Redis special data type Geospatial geographic space

This was launched in redis version 3.2. It can be used to calculate geographical location information, the distance between two places, the people around it, etc. .

1. geoadd

Add the specified geospatial location (latitude, longitude, name) to the specified key.

Here you can use some online latitude and longitude query tools to obtain data.

geoadd china:city 121.472644 31.231706 shanghai
geoadd china:city 120.619585 31.299379 suzhou
geoadd china:city 116.405285 39.904989 beijing
geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu

Go to the key china:city and add the longitude and latitude of 5 places: Shanghai, Suzhou, Beijing, Guangzhou, and Haizhu District of Guangzhou.

How to use Redis special data type Geospatial

2. geopos

Return the positions (longitude and latitude) of all given position elements from the key.

geopos china:city suzhou shanghai

Returns the coordinates of the location.

How to use Redis special data type Geospatial

3. geodist

Returns the distance between two given positions.

If one of the two positions does not exist, the command returns a null value.

The parameter unit that specifies the unit must be one of the following units:

  • m means the unit is meters (default).

  • km means the unit is kilometers.

  • mi means the unit is miles.

  • ft means feet.

geodist china:city suzhou shanghai km

How to use Redis special data type Geospatial

4. Georadius

With the given longitude and latitude as the center, return the position element contained in the key, and the center All position elements whose distance does not exceed the given maximum distance.

georadius china:city 121.49295 31.22337 30 km

I am looking for cities within 30km with the coordinates 121.49295 31.22337 of Shanghai Huangpu District as the center.

How to use Redis special data type Geospatial

Further away, within 100km, you can also find suzhou, add withdist to show the distance.

Added withcoord can return the latitude and longitude.

How to use Redis special data type Geospatial

plus count returns only the amount I specify.

georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1

How to use Redis special data type Geospatial

5. georadiusbymember

This command is the same as the georadius command. It can find elements within the specified range.

But here we do not specify the center point coordinates, but specify which element is the center point.

georadiusbymember china:city suzhou 100 km withdist

Here, taking element suzhou as the center point, find other elements within 100km on Friday.

How to use Redis special data type Geospatial

6. geohash

One or more positional elements, represented by hash.

geohash china:city suzhou shanghai

How to use Redis special data type Geospatial

Returns an 11-character Geohash string, a string representing the current longitude and latitude, which is a different form, converting the two-dimensional longitude and latitude into a one-dimensional String.

If the two strings in the structure above are closer, the distance between the two positions will be closer. This is all you need to know.

The underlying principle of geo is still zset. We can use the zset command to operate geo, such as removing cities from geo.

zrem china:city haizhuqu

How to use Redis special data type Geospatial

The above is the detailed content of How to use Redis special data type Geospatial. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete