【黑马点评】附近商户

news2024/12/23 10:38:25

需求
选择商铺类型后,按照距离当前用户所在位置从近到远的顺序,分页展示该类型的所有商铺。

接口:

  • 参数:
    • typeId:商铺类型
    • current:页码
    • x:经度
    • y:纬度
  • 返回值:所有typeId类型的商铺按照距离坐标(x, y)从近到远排序时的第current页数据。

GEO数据类型

  • 每一个key对应一个地理坐标的集合,集合中的每一个地理坐标由<经度(longitude)、纬度(latitude)、值(member)>三部分组成。
  • 底层用SortedSet数据类型实现,根据GeoHash编码方法计算出每一个地理坐标的分数(score),并按照score进行排序。

常用命令:

# 向key中添加地理坐标
GEOADD key longitude latitude member [longitude latitude member ...] 

# 计算同一个key中的两个地理坐标之间的距离
GEODIST key member1 member2 [m|km|ft|mi]

# 获取某个地理坐标的GEOHASH值
GEOHASH key member

# 获取某个地理坐标的经度和纬度
GEOPOS key member

用于实现范围查找的命令:

  1. GEORADIUS(6以后已废弃)
# 获取以(x, y)为圆心,以r为半径的圆中的所有地理坐标,默认按照距离(x, y)从近到远的顺序排序(ASC)。
GEORADIUS key x y r [ASC|DESC]
  1. GEOSEARCH(6.2新功能)
    在这里插入图片描述3. GEOSEARCHSTORE(6.2新功能):与GEOSEARCH功能一致,不过可以把结果存储到一个指定的key中。

缓存预热
提前将所有商铺的位置信息存入redis中(GEOADD)。

  • key:“shop:geo:{typeId}”
  • value:GEO类型
    • member:“{shopId}”
      在这里插入图片描述

查询附近商户

  1. 用户提交查询附近商户的请求,携带四个参数:typeId,current,x,y。
  2. 计算分页参数:
int from = (current - 1) * SystemConstants.DEFAULT_PAGE_SIZE;
int end = current * SystemConstants.DEFAULT_PAGE_SIZE;
  1. 从redis中查找距离坐标(x, y)最近的前end个商铺
String key = SHOP_GEO_KEY + typeId; // key = geo:shop:{typeId}
GEOSEARCH {key} BYLONLAT {x} {y} BYRADIUS 10 COUNT {end} WITHDISTANCE
  1. 截取from~end的部分
  2. 根据shopId查询数据库获取商铺的详细信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LVS 负载均衡集群指南

1. 引言 LVS (Linux Virtual Server) 虚拟服务器&#xff0c;是 Linux 内核中实现的负载均衡技术&#xff0c;以其高性能、高可靠性和高可用性而闻名。LVS 工作在 TCP/IP 协议栈的第四层 (传输层)&#xff0c;通过将流量分配到多个后端服务器&#xff0c;提高系统性能、可用性…

硬件工程师笔试面试知识器件篇——电阻

目录 1、电阻 1.1 基础 电阻原理图 阻实物图 1.1.1、定义 1.1.2、工作原理 1.1.3、类型 1.1.4、材料 1.1.5、标记 1.1.6、应用 1.1.7、特性 1.1.8、测量 1.1.9、计算 1.1.10、颜色编码 1.1.11、公差 1.1.12、功率 1.1.13、重要性 1.2、相关问题 1.2.1、电阻…

数组和指针 笔试题(1)

目录 0.复习 1.笔试题1 2.笔试题2 3.笔试题3 4.笔试题4 5.笔试题5 0.复习 在做笔试题之前&#xff0c;我们首先复习一下数组名的理解 数组名的所有情况&#xff1a; 1.&数组名&#xff0c;取出的是整个数组的地址 2.sizeof&#xff08;数组名&#xff09;&#x…

LLM常见问题(Attention 优化部分)

1. 传统 Attention 存在哪些问题&#xff1f; 传统的 Attention 机制忽略了源端或目标端句子中词与词之间的依赖关系。传统的 Attention 机制过度依赖 Encoder-Decoder 架构上。传统的 Attention 机制依赖于Decoder的循环解码器&#xff0c;所以依赖于 RNN,LSTM 等循环结构。传…

【Transformer】Tokenization

文章目录 直观理解分词方式词粒度-Word字粒度-Character子词粒度-Subword&#xff08;目前最常使用&#xff09; 词表大小的影响参考资料 直观理解 在理解Transformer或者大模型对输入进行tokenize之前&#xff0c;需要理解什么是token&#xff1f; 理工科的兄弟姐妹们应该都…

027集——goto语句用法——C#学习笔记

goto语句可指定代码的跳行运行&#xff1a; 实例如下&#xff1a; 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Security.Policy; using System.Text; using System.Threading.Tasks;namespace ConsoleApp2 { //…

采用基于企业服务总线(ESB)的面向服务架构(SOA)集成方案实现统一管理维护的银行信息系统

目录 案例 【题目】 【问题 1】(7 分) 【问题 2】(12 分) 【问题 3】(6 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Web 系统设计的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某银行拟将以分行为主体…

是噱头还是低成本新宠?加州大学用视觉追踪实现跨平台的机器手全掌控?

导读&#xff1a; 在当今科技飞速发展的时代&#xff0c;机器人的应用越来越广泛。从工业生产到医疗保健&#xff0c;从物流运输到家庭服务&#xff0c;机器人正在逐渐改变我们的生活方式。而机器人的有效操作和控制&#xff0c;离不开高效的遥操作系统。今天&#xff0c;我们要…

OHIF Viewer (3.9版本最新版) 适配移动端——最后一篇

根据一些调用资料和尝试,OHIF 的底层用的是Cornerstonejs ,这个是基于web端写的,如果说写在微信小程序里,确实有很多报错, 第一个问题就是 npm下载的依赖, 一、运行环境差异 微信小程序的运行环境与传统的 Node.js 环境有很大不同。小程序在微信客户端中运行,有严格的…

传输大咖38 | 如何应对汽车行业内外网文件交换挑战?

在数字化浪潮的推动下&#xff0c;汽车行业正经历着前所未有的变革。随着智能网联汽车的兴起&#xff0c;内外网文件的安全交换成为了一个亟待解决的问题。本文将探讨汽车行业在内外网文件交换中遇到的难题&#xff0c;并介绍镭速如何为这些问题提供有效的解决方案。 跨网文件传…

js封装上传组件 点击拖拽上传

效果图 上传组件代码 <template><div id"appp"><label for"fileInput" class"upload" dragover"fileDragover" drop"fileDrop" v-if"log ! checkLog"><!-- <div class"jia" …

CTFHub技能树-备份文件下载-.DS_Store

目录 方法一&#xff1a;直接访问/.DS_Store文件 方法二&#xff1a;使用Python-dsstore工具解析.Dsstore文件 方法三&#xff1a;直接使用crul访问/./.DS_Store文件 .DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单…

中西结合治疗帕金森怎么样

中西结合治疗帕金森怎么样 中西结合治疗帕金森病是一种综合运用中医和西医治疗方法的策略&#xff0c;旨在通过各自的优势来改善患者的症状、延缓病情进展&#xff0c;并提高生活质量。西医治疗帕金森病主要依赖药物治疗&#xff0c;如左旋多巴和多巴胺受体激动剂&#xff0c;…

基于web知识库管理系统设计与实现

第二章 系统分析 2.1 知识库管理系统可行性分析 可行性分析对系统的开发至关重要&#xff0c;可以大幅减少不必要的损失&#xff0c;保证系统开发的顺利进行。因此要对系统进行技术可行性、经济可行性两方面的系统可行性分析。 2.1.1技术可行性 随着网络技术日新月异的高速…

换热站可视化:提升热能管理效率

通过图扑 HT 搭建换热站可视化解决方案&#xff0c;实时监控与数据展示&#xff0c;优化热能分配与运行管理&#xff0c;提高能源效率并降低运营成本。

俄罗斯Ozon选品三要素,简单实用的选品方法

在 Ozon 上选品可以参考以下三个要素&#xff1a; 要素一&#xff1a;市场需求 关注热门品类&#xff1a;从 Ozon 的销售数据和市场趋势来看&#xff0c;像电子产品&#xff08;如手机、耳机、智能穿戴设备等&#xff09;、时尚服饰&#xff08;包括流行服装、鞋类、配饰&…

HTTPS访问是什么?

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种安全的网络传输协议&#xff0c;它基于HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;进行工作&#xff0c;但增加了安全性的要求。HTTPS通过在客户端&#xff08…

glsl着色器学习(八)通用模板

下面是一个简单的通用WebGL模板 Study.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Doc…

QQ聊天记录删除了怎么恢复?学会这3个方法,简单又有效

QQ作为我们日常沟通的重要工具之一&#xff0c;其聊天记录往往承载着许多珍贵的记忆和重要的信息。但在操作中我们会不小心删除或丢失这些聊天记录&#xff0c;那么QQ聊天记录删除了怎么恢复就成为我们急切需要解决的问题。先别急&#xff0c;本文就为你介绍3种简单又有效的QQ聊…

SpringBoot 大学生体质测试管理系统

摘要 大学生体质测试管理系统提供给用户一个简单方便体质测试管理信息&#xff0c;通过留言区互动更方便。本系统采用了B/S体系的结构&#xff0c;使用了java技术以及MYSQL作为后台数据库进行开发。系统主要分为系统管理员、教师和用户三个部分&#xff0c;系统管理员主要功能…