⑦【Redis GEO 】Redis常用数据类型:GEO [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~

个人主页:.29.的博客

学习社区:进去逛一逛~

Redis GEO

  • [⑦Redis GEO 基本操作命令](#⑦Redis GEO 基本操作命令)
      • [1.geoadd 存储指定的地理空间位置(精度、维度、位置名称)](#1.geoadd 存储指定的地理空间位置(精度、维度、位置名称))
      • [2.geopos 返回指定位置名称的经度和纬度](#2.geopos 返回指定位置名称的经度和纬度)
      • [3.geohash 获取保存位置的geohash值](#3.geohash 获取保存位置的geohash值)
      • [4.geodist 返回两个位置元素之间的距离(单位:m|km|ft|mi)](#4.geodist 返回两个位置元素之间的距离(单位:m|km|ft|mi))
      • [5.georadius 获取key中指定经纬度范围内的所有位置元素(给定经纬度)](#5.georadius 获取key中指定经纬度范围内的所有位置元素(给定经纬度))
      • [6.georadiusbymember 获取key中指定范围内的所有位置元素(给定位置元素)](#6.georadiusbymember 获取key中指定范围内的所有位置元素(给定位置元素))

⑦Redis GEO 基本操作命令


  • Redis GEO主要用于存储地理位置信息,并对存储的选项进行操作:
  • 1.添加地理位置的坐标
  • 2.获取地理位置的坐标
  • 3.计算两个地理位置间的距离
  • 4.根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。

中文乱码处理

bash 复制代码
redis-cli -a 123456 --raw
# redis-cli进入redis控制台,-a输入密码,--raw避免中文乱码问题

1.geoadd 存储指定的地理空间位置(精度、维度、位置名称)


  • geoadd用于存储指定的地理空间位置到key中,语法:

geoadd key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]

  • longitude ------ 精度
  • latitude ------ 维度
  • member ------ 位置名称
bash 复制代码
geoadd city 121.48941 31.40527 "广州"

2.geopos 返回指定位置名称的经度和纬度


  • geopos用于从指定key中返回所有指定位置名称的经度和纬度,不存在返回nil

geopos key member [member ...]

bash 复制代码
geopos city 广州 # 获取空间名称"广州"的经纬度
geopos city 深圳 # 没有存储"深圳"的空间名称,返回nil

3.geohash 获取保存位置的geohash值


  • Redis GEO 使用geohash来保存地理位置的坐标
  • geohash用于获取一个或多个位置元素的geohash值
  • geohash算法生成的是base32编码值,过程:

geohash key member [member ...]

bash 复制代码
# 获取key:city中位置元素"广州"的geohash值
geohash city "广州"

4.geodist 返回两个位置元素之间的距离(单位:m|km|ft|mi)


  • geodist 用于返回两个给定位置间的距离

geodist key member1 member2 [M|KM|FT|MI]

  • m ------ 米
  • km ------ 千米
  • ft ------ 英尺
  • mi ------ 英里
bash 复制代码
geodist city 广州 上海 KM
geodist city 广州 上海 M
geodist city 广州 上海 FT
geodist city 广州 上海 MI

5.georadius 获取key中指定经纬度范围内的所有位置元素(给定经纬度)


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

georadius key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]

  • longitude :经度
  • latitude :维度
  • radius : 最大距离
  • WITHDIST :在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD : 将位置元素的经度和维度也一并返回。
  • WITHHASH : 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。
  • COUNT count :限定返回的最大记录数。
bash 复制代码
# 键:city
# 经度和纬度:121.48941010236740112 31.40526993848380499
# 以经纬度为中心,向外扩张的最大距离:2000
# 单位:km
# withcoord:将获取到的位置元素的经纬度一并返回
# withdist:返回坐标元素与给定经纬度中心的距离
georadius city 121.48941010236740112 31.40526993848380499 2000 km withcoord withdist count 2

6.georadiusbymember 获取key中指定范围内的所有位置元素(给定位置元素)


  • 找出位域指定范围内的元素,中心点是由给定的位置元素决定的

georadiusbymember key member radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]

  • radius : 最大距离
  • WITHDIST :在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD : 将位置元素的经度和维度也一并返回。
  • WITHHASH : 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。
  • COUNT count :限定返回的最大记录数。
bash 复制代码
georadiusbymember city 广州 2000 km withcoord withdist count 2

相关推荐
夜泉_ly27 分钟前
MySQL -安装与初识
数据库·mysql
qq_529835351 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New4 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6754 小时前
数据库基础1
数据库
我爱松子鱼4 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo4 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser5 小时前
【SQL】多表查询案例
数据库·sql
Galeoto5 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
希忘auto6 小时前
详解Redis在Centos上的安装
redis·centos
人间打气筒(Ada)6 小时前
MySQL主从架构
服务器·数据库·mysql