首页 > 数据库 >Redis特殊类型之Geospatial

Redis特殊类型之Geospatial

时间:2023-06-18 10:35:00浏览次数:37  
标签:位置 地理位置 元素 Redis 距离 Geospatial key 类型 添加

1.概述

redis除了提供了五大基本数据类型String、List、Set、Hash、Zset,还有3个比较特殊的数据类型,Geospatial、Hyperloglog、Bitmap,这三个数据类型有一些比较有趣的应用场景,下面说说Geospatial,主要可以应用于跟地图相关的应用。

朋友的定位,附近的人,打车距离计算?

Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!

2.Geo命令:

  1. GEOADD:添加地理位置
  2. GEODIST:获取两人之间的距离
  3. GEOHASH:返回一个或多个位置元素的geohash表示
  4. GEOPOS:获取当前位置
  5. GEORADIUS:以给定的经纬度为中心,找出某一半径内的元素
  6. GEORADIUSBYMEMBER:找出位于指定元素周围的其他元素

3.geoadd:添加地理位置

3.1添加地理位置

  • geoadd key 经度 纬度 城市名称[多个添加,经纬度城市名称循环]
  • 两级(南极和北极)无法添加,一般通过程序导入
  • 添加北京位置

Redis特殊类型之Geospatial_地理位置

  • 添加河北和上海位置

Redis特殊类型之Geospatial_地理位置_02

3.2获取地理位置

  • geopos key value
  • 获取北京和上海的位置

Redis特殊类型之Geospatial_地理位置_03

3.3计算两个位置之间的距离(直线距离[笑哭,谁会查直线距离])

  • geodist key 位置1 位置2 [m|km|ft|mi](单位)
  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。
  • 计算河北和北京之间的距离,单位为千米

Redis特殊类型之Geospatial_地理位置_04

3.4以指定的经纬度为中心,找出某一半径内的元素

  • GEORADIUS key 维度 经度 半径长度 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
  • GEORADIUSBYMEMBER key 位置名称 .... 和上面的georadius一样 只不过是把经纬度换成了已存在的地理位置名称
  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。
  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • COUNT 限定返回的记录数。
  • ASC: 查找结果根据距离从近到远排序。
  • DESC: 查找结果根据从远到近排序。
  • 搜索经度110 维度30 附近1000km内的位置,或者2000米的位置
  • 可以用于做附近的人,比如附近100m内的玩家XXX,感觉王者是不是这么做

Redis特殊类型之Geospatial_ci_05

3.5返回一个或多个地理位置的11位的哈希值(一般用不到)

  • geohash key value[value循环,多个空格拆分]

Redis特殊类型之Geospatial_地理位置_06

3.6其他命令,底层是用Zset实现的,可以用zset的删除和查看等命令

  • 查看

Redis特殊类型之Geospatial_数据类型_07

  • 删除

Redis特殊类型之Geospatial_数据类型_08

  • .......

4使用场景

  • 计算两地之间的直线距离
  • 存储地理位置
  • 实现位置的附近人功能
127.0.0.1:6379> zrange china:city 0 -1  #查看所有元素
1) "chongqin"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
127.0.0.1:6379> zrem china:city beijing  #移除指定元素
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqin"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "shanghai"

标签:位置,地理位置,元素,Redis,距离,Geospatial,key,类型,添加
From: https://blog.51cto.com/u_15130867/6507509

相关文章

  • 05【HTML的元素类型】
    文章目录五、HTML的元素类型5.1块级元素5.2行内元素5.3行内块元素五、HTML的元素类型在HTML中元素分为三类:块级元素、行内元素、行内块元素5.1块级元素块级元素特点:1)独占一行,自上而下排列2)默认不设置宽度时,继承父元素的宽度(默认为父级宽度的100%)3)可以定义自己的宽度和高......
  • 2023-06-17:说一说redis中渐进式rehash?
    2023-06-17:说一说redis中渐进式rehash?答案2023-06-17:在Redis中,如果哈希表的数组一直保持不变,就会增加哈希冲突的可能性,从而降低检索效率。为了解决这个问题,Redis会对数组进行扩容,通常是将数组大小扩大为原来的两倍。然而,这个扩容过程会引起元素在哈希桶中的分散,导致元素的移动。由......
  • 2023-06-17:说一说redis中渐进式rehash?
    2023-06-17:说一说redis中渐进式rehash?答案2023-06-17:在Redis中,如果哈希表的数组一直保持不变,就会增加哈希冲突的可能性,从而降低检索效率。为了解决这个问题,Redis会对数组进行扩容,通常是将数组大小扩大为原来的两倍。然而,这个扩容过程会引起元素在哈希桶中的分散,导致元素的移动。......
  • 07. centos使用yum方式安装redis
    一、在CentOS和RedHat系统中,首先添加EPEL仓库,然后更新yum源:sudoyuminstallepel-releasesudoyumupdate(可不更新)二、然后安装Redis数据库:sudoyum-yinstallredis安装好后启动Redis服务即可:sudosystemctlstartredis这里同样可以使用redis-cli进入Redis命令行......
  • 同类型,类背包动态规划,选地dp
    弱化版:黑虎阿福: 题目描述 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有NNN家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。作为一向谨慎......
  • MySQL错误类型1030
     该错误类型一般为磁盘内存空间不足。常规情况下清除备份文件即可。引用:mysql出现1030Goterror28fromstorageengine解决方法_风火程序员的博客-CSDN博客......
  • Windows如何本地安装Redis且设置服务自启动?
    redis中文网:http://redis.cn/如果是安装Windows版的redis需要去GitHub上下载安装包如果是在Linux上安装,可以直接使用命令进行安装本次教程是基于Windows系统进行的GitHub地址:https://github.com/microsoftarchive/redis选择需要下载的版本 如果加载不出来的话,可以点击连接......
  • Docker 安装 Redis
    创建挂载文件创建目录:mkdir-p/usr/redis/conf创建文件:touch/usr/redis/conf/redis.conf安装Redis设置密码并启动Redis,首先进入redis挂载目录:cd/usr/redis创建启动文件:cat<<EOF>start.sh#!/bin/bashdockerstopredisdockerrmredisdockerrun-d\\--namere......
  • .net core 中使用Redis,及Redis问题
    1.安装Microsoft.Extensions.Caching.StackExchangeRedis包2.//分布式缓存  在startup的ConfigureServices中注入redis                               services.AddStackExchangeRedisCache(options=> ......
  • Navicat For Redis 的学习与使用
    NavicatForRedis的学习与使用背景周末在家看了几个公众号:说到Navicat16.2已经有了Redis的客户端.想着前段时间一直在学习Redis,但是没有GUI的工具,所以想可以试用一下.这里简单总结和记录一下最新版的下载地址#最新版的集合版本premium里面包含多种数据库的连接工具......