首页 > 数据库 >基于Redis实现查找附近的人/排行榜

基于Redis实现查找附近的人/排行榜

时间:2023-06-21 14:26:00浏览次数:26  
标签:经纬度 命令 Redis 位置 redis 距离 排行榜 查找 添加

引言

     在日常使用的有些APP中,想什么微信,百度地图,可以可以搜寻附近的人,距离自己多远,以及在地图上我们可以搜索附近的某个地点,距离自己的位置。针对这种类似的功能,我们可以通过redis就能实现。

redis在3.2版本之后也提供了地理位置的能力,使用redis可以轻松实现查找附近的人

一:附近的人(地)

1:geoadd命令

 该命令是添加地理位置信息,基本格式是:

 举个例子:我现在要添加东合中心的地理位置,先定位出东合中心的经纬度坐标位置114.17135 30.51155,然后在redis中添加经纬度位置

geoadd position  114.17135 30.51155 dhzx 

要注意的是,某歌地图搜出来的坐标,纬度在前,经度在后,而redis命令是相反的

如果要一次添加多个位置,直接在后面追加经纬度和member即可,接下来我们添加 体育中心,长江大桥的经纬度位置

geoadd position  114.17701 30.51159 tyzx 114.29901 30.55315 cjdq

2:geodist命令

 该命令是计算两个位置的距离,我们已经添加了三个位置,接下来我们可以计算东合中心-长江大桥的两地之间的距离

geodist position dhzx cjdq

默认单位是米,同时也支持其他单位:

  • m:米
  • km:公里
  • mi:英里
  • ft:英尺

3:georadius命令

该命令是找出指定坐标点一定距离内的位置,基本格式是:

 #获取体育中心方圆1公里内的地点 (有东合中心 、体育中心两个)

 后面可选参数主要是针对查询结果做一些处理:

这些参数不一一演示,就演示WITHCOORD、WITJDIST、ASC

 

 

 到这里,相信你已经可以使用redis实现“查到附近的人”了

4:georadiusbymember命令

该命令同样是找出距离指定位置n米距离内的点位,与georadius的区别是:

georadius是指定坐标点来搜索,而georadiusbymember是指定member来搜索,

5:geohash命令

该命令是计算某位置的hash值,基本格式如下:

6:geopos命令

获取指定位置的坐标:

 

二:排行榜

   排行榜的功能主要是基于redia的Zset进行实现的,ZSet数据结构类似于Set结构,只是ZSet结构中,在set基础上加入了一个score字段,通过利用score进行相关的排序。

  每个元素都会有一个分值(score),然后所有元素按照分值的大小进行排列,相当于是一个进行了排序的链表。

http://www.javajun.net/posts/13563/index.html

标签:经纬度,命令,Redis,位置,redis,距离,排行榜,查找,添加
From: https://www.cnblogs.com/zhaosq/p/17469498.html

相关文章

  • 如何使用idea来查找所有未使用的代码?
    背景项目组需要对开发的项目进行一次清理,把一些未被引用的代码清理掉。我们知道一段代码未被引用,那么代码通常是灰色的。但是一个完整的项目,会存在成千上万个Java文件,如果一个一个看去需要花费太多的精力,并不现实。那怎么才能一下子找到所有未使用的代码呢?一开始我想着有......
  • Redis持久化方案
    Redis有两种持久化方案RDB持久化AOF持久化RDB持久化RDB全称RedisDatabaseBackupfile(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运......
  • 抛砖引玉:Redis 与 接口自动化测试框架的结合
    接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架中,以提升测试效率和数据管理能力。Redi......
  • redis迁移
    redis的几种数据导入导出方式【转】 环境说明:202.102.221.11redis源实例202.102.221.12redis目标实例202.102.221.13任意linux系统一、redis-dump方式1.安装redis-dump工具[[email protected]~]#yuminstallrubyrubygemsruby-devel-y#更改gem源[root......
  • redis学习十一:数据类型命令及落地运用 (GEO)
    redis之地理空间GEO1.geoaddkeylongitudelatitude名称;zrangekey0-1查看如果出现乱码问题登录时候加上--raw 2.geoposkey名称获取对应经纬度 3.用geohash表示 4.geodist距离多少km/m 5.georadius这个尚硅谷的杨哥写的这个比较详细,直接截图照搬了。 6......
  • MongoDB批量导入Redis优化迭代笔记
    背景统计最近五天所有content信息的正文字节数(正文字段占用较多),然后根据这个大小,推送存在redis要配置多少的内存。统计方法1.在mongodb中查询db.content_.aggregate([{$match:{updatetime:{$gte:1686134400000,//对应日期"2023-06-07T00:00:00Z"的......
  • 使用docker-compose同时启动MySQL和Redis
    环境查看安装docker和docker-composeapt-yinstalldocker.iodocker-compose设置docker-compose配置文件root@iZ2zebcd9hncu1371fetliZ:/data/docker-compose#pwd/data/docker-composeroot@iZ2zebcd9hncu1371fetliZ:/data/docker-compose#catdocker-compose.ymlvers......
  • 缓存方案之Redis
    Redis简介  Redis是RemoteDictionaryServer(Redis)的缩写,或许光听名字你就能猜出它大概是做什么的。不错,它是一个由SalvatoreSanfilippo编写的key-value存储系统,是一个使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型的Key-Value数据库,并提供多种......
  • 1.redis常见数据类型-字符串String、列表List、集合Set、Hash哈希、Zset有序集合
    背景:这里说的数据类型是value的数据类型,key的类型都是字符串。命令不区分大小写,而key的值是区分大小写的 help@+数据类型会出现命令提示比如help@string,help@list常见命令:keys*查看当前库所有key(匹配:keys*1)existskey判断某个key是否存在typekey查看你的......
  • lettuce+redisTemplate实现redis单击和集群的整合
    lettuce+redisTemplate实现redis单击和集群的整合Springboot整合redis是非常方便的,大致包含如下四部分pomstart相关jar的引入properties/yaml基础配置信息configbean的initbean的注入及使用如果遇到网上的自动装配的实例直接跳过吧,哪怕再小的公司,密码也会加密处理......