明天疯狂星期四请V我50

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 明天疯狂星期四请V我50

前言:

大家好我是小面~今天给大家带来的主题是:

每当星期四,是不是群里一直流传着:想要搞大我肚子吗?v我50,请我去吃肯德基。

不过小面这边v不了你50,但小面可以教你如何用redis去看你离KFC有多远!

正文:

Redis中命令应用:

进入正题,用redis实现地理位置信息,我们可以使用redis(3.2版本以上支持)中的GeoHash的结构去实现。首先我们先看一下geohash的命令与使用:

//我们先添加一下我们的地址,以及kfc的地址。
//   GEOADD: 将给定的位置对象(纬度、经度、名字)添加到指定的key;
GEOADD location 111 23 myhome  (小面随机选的深圳的地址)
GEOADD location 112 25 KFC  (小面随机选的深圳的随机KFC地址地址) 
//想要查看我们添加的地址的经纬度
//   GEOPOS: 从key⾥⾯返回所有给定位置对象的位置(经度和纬度);
GEOPOS location myhome
GEOPOS location KFC
//查看我们和kfc的距离
//   GEODIST: 返回两个给定位置之间的距离;
GEODIST location myhome KFC (此处可以添加距离参数,不添加默认m,可以是km,mi)
//查看以我们的地址为中心,给一个半径内的位置
//   GEORADIUS: 以给定的经纬度为中⼼,返回⽬标集合中与中⼼的距离不超过给定最⼤距离的所有位置对象;
//   GEORADIUSBYMEMBER: 以给定的位置对象为中⼼,返回与其距离不超过给定最⼤距离的所有位置对象。
GEORADIUS location 经度 维度 距离 单位长度
//查看位置的geohash值
//   GEOHASH: 返回⼀个或多个位置对象的Geohash表⽰;
GEOHASH location myhome
(此处分享两个网站,可以在线查询geohash值)
(http://geohash.gofreerange.com)
(http://www.geohash.cn)

这样子,我们就可以通过redis查看我们与kfc的距离,经纬度,geohash值。

Redis GEOHASH原理:

GEOHASH原理讲述:

GeoHash本质上是一串字符串,他经过经纬度的转换计算得出的一串字符串,并且在一定范围内(可以把地图看成一个个矩形组成)的字符串是相同的。在同一个矩形内的geohash值 是相同的。

这样子是为了只表示大概的一个区域,并不是特别具体精确的一个点。假设此时我们想要查询我们的住址的geohash ,假设是abc01,在abc01区域内有很多的小区,我们 把geohash值作为key,然后在这个abc01的区域内的各种场所作为value 进行缓存。这就很方便缓存了,换做是普通我们根据经纬度计算的话,那缓存起来的内容非常的多了。

geohash还有一个特性,那就是字符串越长的话,范围就越小,位置就越精确。同时如果字符串越相似,那说明二者区域越相近。

GEOHASH计算方法:

geohash值的计算方法有点和二分的思想类似。我们地球得到经纬度的范围是[-90,90], kfc的纬度是25,然后我们就可以下面锁展示的方法对纬度25进行编码:

我们把地球的维度区间进行二分,分为[-90,0),[0,90],而此时kfc的维度是25,那么是在右区间,我们标记为1。

同理我们再把[0,90]使用二分法分为 [0,45),[45,90],此时我们就认为25属于左区间,给标记为0;

同理我们再把[0,45)使用二分法分为为 [0,22.5),[22.5,45],我们就认为25属于右区间,标记为1;

同理我们再把[22.5,45]使用二分法分为为 [22.5,28.75),[28.75,45],我们就认为25属于左区间,标记为0;

同理我们再把[22.5,28.75)使用二分法分为为 [22.5,25.625),[25.625,28.75],我们就认为25属于左区间,标记为0;

同理我们再把[22.5,25.625)使用二分法分为为 [22.5,24.0625),[24.0625,25.625],我们就认为25属于右区间,标记为1;

………………以此类推,我们就计算到此处。kfc维度的计算结果为101001,经度的计算结果为110011 合并:此时我们就做合并操作,我们把经度放在偶数位置上,纬度放在奇数位置上,用这样子的方法去组成新的字符串,最终得到:110110000111。

最后我们把我们生成的字符串110110000111转换成十进制,所得的base32编码就是最后的geohash值。

Geohash能实现什么功能?

地图导航;各种地图app 附近功能;附近商铺,附近的好友 定位信息

总结

5分钟教你用redis看你与kfc的距离,你会了吗?

我是小面,感谢各位人才的:点赞、收藏和评论,我们下期更精彩!

相关文章
|
测试技术 API 开发工具
在Python中实现安卓手机自动化
在Python中实现安卓手机自动化
1618 0
|
9月前
|
供应链 搜索推荐 API
深度解析1688 API对电商的影响与实战应用
在全球电子商务迅猛发展的背景下,1688作为知名的B2B电商平台,为中小企业提供商品批发、分销、供应链管理等一站式服务,并通过开放的API接口,为开发者和电商企业提供数据资源和功能支持。本文将深入解析1688 API的功能(如商品搜索、详情、订单管理等)、应用场景(如商品展示、搜索优化、交易管理和用户行为分析)、收益分析(如流量增长、销售提升、库存优化和成本降低)及实际案例,帮助电商从业者提升运营效率和商业收益。
434 20
|
10月前
|
人工智能 IDE 程序员
GitHub Copilot 免费了!程序员们的福音来了!
《GitHub Copilot 免费了!程序员们的福音来了!》 近日,GitHub 宣布其 AI 编程助手 GitHub Copilot 现在可以免费使用。曾经每月需支付 10 美元订阅费的 Copilot,现在向所有人开放免费版本,这对个人开发者、初学者和小型团队来说是个大好消息。免费版支持 GPT 和 Claude 模型,并提供每月 2000 次代码补全和 50 条聊天消息等核心功能。用户只需注册或登录 GitHub 账户,在 VS Code 中安装扩展并激活免费版即可使用。此外,Visual Studio Code 也完全免费,进一步降低了开发门槛。 除了
11297 7
GitHub Copilot 免费了!程序员们的福音来了!
|
7月前
|
SQL 监控 数据库
如何解决 SQL Server 占用内存过多问题
SQL Server 占用过多内存会导致响应缓慢和查询性能低下。解决流程包括:1) 查看内存使用情况,2) 分析各数据库内存占用,3) 优化 SQL Server 配置(如限制最大内存),4) 优化查询(如创建索引),5) 持续监控效果。通过这些步骤可有效控制内存占用,提升系统性能。
859 0
|
11月前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
566 3
|
缓存 监控 网络协议
DNS缓存中毒
【8月更文挑战第19天】
333 16
|
人工智能 自动驾驶 云栖大会
2023云栖大会 阿里云CTO周靖人,打造一朵AI时代最开放的云
2023云栖大会上,阿里云宣布了一项重磅计划:阿里云高校计划,助力高校科研与教育加速,让每位中国在校大学生真实受益于普惠算力。目前,清华大学、北京大学、浙江大学、上海交通大学、中国科学技术大学、华南理工大学等高校已首批达成合作。
89695 307
|
运维 Serverless Shell
Serverless 应用引擎产品使用合集之如何完成Python依赖环境配置
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
NoSQL 前端开发 Java
spring boot3登录开发-2(1图形验证码接口实现)
spring boot3登录开发-2(1图形验证码接口实现)
611 2
|
安全 JavaScript 前端开发
若依实现系统单点登录(可绕过验证码)
若依实现系统单点登录(可绕过验证码)