大数据学习之Redis,十大数据类型的具体应用(五)

目录

[3.9 Redis地理空间(GEO)](#3.9 Redis地理空间(GEO))

简介

原理

Redis在3.2版本以后增加了地理位置的处理哦

命令

命令实操

如何获得某个地址的经纬度


3.9 Redis地理空间(GEO)

简介

移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、高德地图附近的核酸检査点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?

地球上的地理位置是使用二维的经纬度表示,经度范围(-180,180],纬度范围(-90,90],只要我们确定一个点的经纬度就可以名取得他在地球的位置。

例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查找距离我们(坐标x0,yO)附近r公里范围内部的车辆

但是这样会有什么问题呢?

1.查询性能问题,如果并发高,数据量大这种查询是要搞垮数据库的

2.这个查询的是一个矩形访问,而不是以我为中心r公里为半径的圆形访问。

3.精准度的问题,我们知道地球不是平面坐标系,而是一个圆球,这种矩形计算在长距离计算时会有很大误差

原理
Redis在3.2版本以后增加了地理位置的处理哦
命令

GEOADD 多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中

GEOPOS 从键里面返回所有给定位置元素的位置(经度和纬度)

GEODIST 返回两个给定位置之间的距离。

GEORADIUS 以给定的经纬度为中心,返回与中心的距离不超过给定最大距离的所有位置元素

GEORADIUSBYMEMBER 跟GEORADIUS类似

GEOHASH返回一个或多个位置元素的 Geohash 表示

命令实操
如何获得某个地址的经纬度
  • GEOADD

添加经纬度坐标

中文乱码如何处理

复制代码
GEOADD city 116.403963 39.915119 "天安门 "116.40341439.924091 "故宫" 116.024067 40.362639 "长城"
type city #输出 zset
zrange city 0 -1 #输出 "中文乱码" 

中文乱码解决方案

复制代码
#在进入redis 客户端的时候 加 --raw参数
redis-cli -a passwd --raw
zrange city 0 -1 #输出 天安门 故宫 长城
  • GEOPOS

返回经纬度

复制代码
GE0POS city 天安门 故宫 长城 #输出 116.403963 39.915119 116.40341439.924091 116.024067 40.362639
  • GEOHASH

返回坐标的geohash表示

原理:

  • geohash算法生成的base32编码值

  • 3维变2维变1维

复制代码
GEOHASH city 天安门 故宫 长城 #输出 wx4g0f6f2v0 wx4gogfqsjo wx4t85y1kto 
  • GEODIST

两个位置之间距离

复制代码
GE0DIST city 天安门 故宫 m #输出  998.8332
  • GEORADIUS

以半径为中心,查找附近的xxx

georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

  • GEORADIUSBYMEMBER

    GE0RADIUSbymember city天安门
    10 km withdist withcoord count 10 withhash

相关推荐
关于不上作者榜就原神启动那件事17 分钟前
Java基础学习
java·开发语言·学习
未来之窗软件服务36 分钟前
solidwors插件 开发————仙盟创梦IDE
前端·javascript·数据库·ide·仙盟创梦ide
yc_122437 分钟前
SqlHelper 实现类,支持多数据库,提供异步操作、自动重试、事务、存储过程、分页、缓存等功能。
数据库·c#
小白学大数据42 分钟前
基于Scrapy-Redis的分布式景点数据爬取与热力图生成
javascript·redis·分布式·scrapy
小黑_深呼吸1 小时前
Prometheus实战教程:k8s平台-Mysql监控案例
运维·学习·kubernetes·prometheus
Kookoos1 小时前
Redis + ABP vNext 构建分布式高可用缓存架构
redis·分布式·缓存·架构·c#·.net
小李不想说话1 小时前
HTTPS 加密原理
java·网络·网络协议·学习·安全·http·https
Leo.yuan2 小时前
基于地图的数据可视化:解锁地理数据的真正价值
大数据·数据库·信息可视化·数据挖掘·数据分析
好吃的肘子2 小时前
MongoDB入门
数据库·mongodb
noravinsc2 小时前
人大金仓数据库 与django结合
数据库·python·django