redis高级:GEO地理位置信息、乐观锁悲观锁及python中实现

发布时间 2023-04-22 16:00:54作者: wwwxxx123

一、GEO地理位置信息

介绍

GEO(地理信息定位):存储经纬度,计算两地距离,范围等

他的本质是一个有序集合。

我们可以根据经纬度,确定具体地址的。比如使用高德开放api返回具体地址(但是可能有些时候不准确,需要人工去处理这些问题)

应用举例:

北京:116.28,39.55

天津:117.12,39.08

可以计算天津到北京的距离,天津周围50km的城市,外卖

可以统计某个经纬度范围内有哪些好友,餐馆等

项目中如何获取经纬度:

1、这跟后端没关系:后端只需要存

2、app,有定位功能

3、网页,集成了高德地图,定位功能

5个城市纬度

城市 经度 纬度 简称
北京 116.28 39.55 beijing
天津 117.12 39.08 tianjin
石家庄 114.29 38.02 shijiazhuang
唐山 118.01 39.38 tangshan
保定 115.29 38.51 baoding

redis中的相关命令

redis存储地理位置信息

geoadd key longitude latitude member 
geoadd key  经度  纬度 名字

例:把北京地理信息天津到cities:locations中
geoadd cities:locations 116.28 39.55 beijing

geoadd cities:locations 117.12 39.08 tianjin

geoadd cities:locations 114.29 38.02 shijiazhuang

geoadd cities:locations 118.01 39.38 tangshan

geoadd cities:locations 115.29 38.51 baoding

获取地理位置信息

geopos key member 
geopos cities:locations beijing #获取北京地理信息

geodist key member1 member2 [unit]#获取两个地理位置的距离 unit:m(米) km(千米) mi(英里) ft(尺)
geodist cities:locations beijing tianjin km #北京到天津的距离,89公里

获取指定位置范围内的地理位置信息集合

georadius key logitude 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]
#获取指定位置范围内的地理位置信息集合
'''
withcoord:返回结果中包含经纬度
withdist:返回结果中包含距离中心节点位置
withhash:返回解雇中包含geohash
COUNT count:指定返回结果的数量
asc|desc:返回结果按照距离中心店的距离做升序/降序排列
store key:将返回结果的地理位置信息保存到指定键
storedist key:将返回结果距离中心点的距离保存到指定键
'''
georadiusbymember cities:locations beijing 150 km
'''
1) "beijing"
2) "tianjin"
3) "tangshan"
4) "baoding"
'''

二、乐观锁悲观锁及python中实现

参考博客:https://zhuanlan.zhihu.com/p/622987268