当前位置:网站首页>Redis getting started complete tutorial: Geo
Redis getting started complete tutorial: Geo
2022-07-04 22:53:00 【Gu Ge academic】
Redis3.2 Version provides GEO( Location of geographic information ) function , Support the storage of geographic location information
Information is used to realize such as nearby location 、 Shake this kind of function that depends on Geographic Information , For need
It's good news for developers who want to realize these functions .GEO The function is Redis Another author of
Matt Stancliff [1] reference NoSQL database Ardb [2] Realized ,Ardb The author is from China , it
Provides excellent GEO function .
1. Add location information
geoadd key longitude latitude member [longitude latitude member ...]
longitude、latitude、member They are the longitude of the geographical location 、 latitude 、 member , surface
3-7 Exhibition 5 The longitude and latitude of a city .
cities:locations It's the top 5 A collection of urban geographic information , Now add Beijing
Geographic location information :
127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 1
The returned result represents the number of successful additions , If cities:locations Not included beijing,
So the return result is 1, If it already exists, return 0:
127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 0
If you need to update the geographic location information , Still usable geoadd command , Although the result is returned
by 0.geoadd Command can add multiple geographic location information at the same time :
127.0.0.1:6379> geoadd cities:locations 117.12 39.08 tianjin 114.29 38.02
shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
(integer) 4
2. Get geographic location information
geopos key member [member ...]
The following operation will obtain the economic dimension of Tianjin :
127.0.0.1:6379> geopos cities:locations tianjin
1) 1) "117.12000042200088501"
2) "39.0800000535766543"
3. Gets the distance between two geographical locations .
geodist key member1 member2 [unit]
among unit Represents the unit of the returned result , It includes the following four :
·m(meters) It's for rice .
·km(kilometers) Representative kilometer .
·mi(miles) For miles .
·ft(feet) For ruler .
The following operations are used to calculate the distance between Tianjin and Beijing , And in kilometers :
127.0.0.1:6379> geodist cities:locations tianjin beijing km
"89.2061"
4. Gets the collection of geographic information locations within the specified location range
georadius key longitude latitude radiusm|km|ft|mi [withcoord] [withdist]
[withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadiusbymember key member radiusm|km|ft|mi [withcoord] [withdist]
[withhash] [COUNT count] [asc|desc] [store key] [storedist key]
georadius and georadiusbymember The effect of the two commands is the same , All in one place
Calculate other geographic information locations within the specified radius by taking the location as the center , The difference is georadius command
The center position of gives the specific longitude and latitude ,georadiusbymember Just give the members . Its
in radiusm|km|ft|mi Is the required parameter , The radius is specified ( With units ), These two commands have many
Optional parameters , As shown below :
·withcoord: The return result contains latitude and longitude .
·withdist: The return result contains the distance from the center node position .
·withhash: The return result contains geohash, of geohash Later on .
·COUNT count: Specify the number of returned results .
·asc|desc: The returned results are in ascending or descending order according to the distance from the central node .
·store key: Save the geographic location information of the returned result to the specified key .
·storedist key: Save the distance between the returned result and the central node to the specified key .
The following operation calculates... In five cities , Distance from Beijing 150 Cities within kilometers :
127.0.0.1:6379> georadiusbymember cities:locations beijing 150 km
1) "beijing"
2) "tianjin"
3) "tangshan"
4) "baoding"
5. obtain geohash
geohash key member [member ...]
Redis Use geohash [3] Convert two-dimensional latitude and longitude to one-dimensional string , The following operation will return
beijing Of geohash value .
127.0.0.1:6379> geohash cities:locations beijing
1) "wx4ww02w070"
geohash It has the following characteristics :
·GEO The data type of is zset,Redis All geographic information will be geohash Store in zset
in .
127.0.0.1:6379> type cities:locations
zset
· The longer the string , Indicates a more precise position , surface 3-8 The corresponding precision of string length is given
degree , for example geohash The length is 9 when , Precision in 2 Rice or so .
surface 3-8 geohash The correspondence between length and accuracy
· The more similar the two strings are , The closer they are ,Redis Match with string prefix
Algorithm implementation related commands .
·geohash Coding and latitude and longitude can be converted to each other .
Redis It is using ordered sets and combining geohash The features of GEO A number of orders .
6. Delete geographic information
zrem key member
GEO There is no command to delete members , But because GEO The underlying implementation of zset, therefore
You can borrow zrem Command to delete geographic location information .
[1] https://matt.sh/
[2] https://github.com/yinqiwen/ardb
[3] https://en.wikipedia.org/wiki/Geohash
边栏推荐
- SPSS安装激活教程(包含网盘链接)
- 剑指 Offer 65. 不用加减乘除做加法
- leetcode 72. Edit distance edit distance (medium)
- NFT insider 64: e-commerce giant eBay submitted an NFT related trademark application, and KPMG will invest $30million in Web3 and metauniverse
- Redis入门完整教程:Redis Shell
- 攻防世界 misc 高手进阶区 a_good_idea
- 攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
- 常用技术指标之一文读懂BOLL布林线指标
- Logo special training camp section II collocation relationship between words and graphics
- 蓝队攻防演练中的三段作战
猜你喜欢
Analysis of the self increasing and self decreasing of C language function parameters
Attack and Defense World MISC Advanced Area Erik baleog and Olaf
攻防世界 misc 高手进阶区 a_good_idea
MySQL Architecture - logical architecture
NFT Insider #64:电商巨头eBay提交NFT相关商标申请,毕马威将在Web3和元宇宙中投入3000万美元
Redis入门完整教程:发布订阅
Detailed explanation of heap sort code
Talk about Middleware
MYSQL架构——逻辑架构
Attack and defense world misc master advanced zone 001 normal_ png
随机推荐
About stack area, heap area, global area, text constant area and program code area
MySQL Architecture - user rights and management
企业如何跨越数字化鸿沟?尽在云原生2.0
Redis入门完整教程:GEO
【室友用一局王者荣耀的时间学会了用BI报表数据处理】
图片懒加载的原理
Attack and defense world misc advanced grace-50
[try to hack] wide byte injection
sobel过滤器
Redis入门完整教程:有序集合详解
SPSS安装激活教程(包含网盘链接)
常用技术指标之一文读懂BOLL布林线指标
Logo special training camp Section IV importance of font design
High school physics: linear motion
环境加密技术解析
Attack and defense world misc master advanced zone 001 normal_ png
Attack and defense world misc advanced area ditf
剑指Offer 68 - II. 二叉树的最近公共祖先
Breakpoint debugging under vs2019 c release
Unity修仙手游 | lua动态滑动功能(3种源码具体实现)