Redis(五)geospatial的用法

geospatial 地理空间

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

Redis的Geo,3.2版本推出,可以推算地理位置的信息,两地之间的距离

城市经纬度查询:http://www.jsons.cn/lngcode/

geoadd

# geoadd   先经度后维度(官方文档疑似写错了)
127.0.0.1:6379[1]> geoadd china:city 39.9 116.4 beijing
(error) ERR invalid longitude,latitude pair 39.900000,116.400000
经纬度反了会报错
# 两极无法直接添加!南北极,而且我们一般会下载城市数据通过java程序一次性导入
127.0.0.1:6379[1]> geoadd china:city 116.4 39.9 beijing
# 批量 geoadd china:city 116.4 39.9 beijing 121.4 31.2 shanghai 114.1 22.5 shenzhen 113.3 23.1 guangzhou 114.2 22.3 xianggang 113.5 22.2 aomen 121.9 29.5 xiangshan
(integer) 1
127.0.0.1:6379[1]> geoadd china:city 121.4 31.2 shanghai
(integer) 1
127.0.0.1:6379[1]> geoadd china:city 114.1 22.5 shenzhen
(integer) 1
127.0.0.1:6379[1]> geoadd china:city 113.3 23.1 guangzhou
(integer) 1
127.0.0.1:6379[1]> geoadd china:city 114.2 22.3 xianggang
(integer) 1
127.0.0.1:6379[1]> geoadd china:city 113.5 22.2 aomen
(integer) 1
127.0.0.1:6379[1]> geoadd china:city 121.9 29.5 xiangshan
(integer) 1

geopost

# 获取地理位置
127.0.0.1:6379[1]> GEOPOS china:city beijing shanghai shenzhen xianggang
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
2) 1) "121.40000134706497192"
2) "31.20000061483705878"
3) 1) "114.09999936819076538"
2) "22.50000113800319212"
4) 1) "114.19999748468399048"
2) "22.29999896492555678"

geodist

两人之间的直线距离

  • m 表示单位为米。
  • km 表示单位为千米。
  • mi 表示单位为英里。
  • ft 表示单位为英尺。
127.0.0.1:6379[1]> GEODIST china:city beijing xianggang
"1968579.6084"
127.0.0.1:6379[1]> GEODIST china:city beijing xianggang m
"1968579.6084"
127.0.0.1:6379[1]> GEODIST china:city beijing xianggang km
"1968.5796"
127.0.0.1:6379[1]> GEODIST china:city beijing xianggang ft
"6458594.5159"
127.0.0.1:6379[1]> GEODIST china:city beijing xianggang mi
"1223.2217"

georadius

以给定的经纬度为中心,找出某一半径内所有的元素

实现附近的人:

1、获取所有附近的人的地址(GPS)

# 范围查找  经度110 纬度 30为圆心 半径100km内所有的城市
127.0.0.1:6379[1]> GEORADIUS china:city 110 30 100 km
(empty list or set)
# 范围查找  经度110 纬度 30为圆心 半径1000km内所有的城市
127.0.0.1:6379[1]> GEORADIUS china:city 110 30 1000 km
1) "aomen"
2) "xianggang"
3) "shenzhen"
4) "guangzhou"
# 范围查找  经度110 纬度 30为圆心 半径100km内所有的城市 带上经纬度和城市距离该点的直线距离
127.0.0.1:6379[1]> GEORADIUS china:city 110 30 1000 km withcoord withdist
1) 1) "aomen"
   2) "935.1758"
   3) 1) "113.49999994039535522"
      2) "22.19999914574732003"
2) 1) "xianggang"
   2) "953.3433"
   3) 1) "114.19999748468399048"
      2) "22.29999896492555678"
3) 1) "shenzhen"
   2) "928.8366"
   3) 1) "114.09999936819076538"
      2) "22.50000113800319212"
4) 1) "guangzhou"
   2) "834.6077"
   3) 1) "113.29999834299087524"
      2) "23.10000005307264104"
# count 控制个数
127.0.0.1:6379[1]> GEORADIUS china:city 110 30 1000 km withcoord withdist count 2
1) 1) "guangzhou"
   2) "834.6077"
   3) 1) "113.29999834299087524"
      2) "23.10000005307264104"
2) 1) "shenzhen"
   2) "928.8366"
   3) 1) "114.09999936819076538"
      2) "22.50000113800319212"
 # GEORADIUSBYMEMBER 根据给定的元素确定中心点,再进行查找
127.0.0.1:6379[1]> GEORADIUSBYMEMBER china:city shanghai 1000 km withdist
1) 1) "xiangshan"
   2) "195.0791"
2) 1) "shanghai"
   2) "0.0000"
127.0.0.1:6379[1]> GEORADIUSBYMEMBER china:city shanghai 2000 km withdist
1) 1) "aomen"
   2) "1271.1657"
2) 1) "xianggang"
   2) "1220.4023"
3) 1) "shenzhen"
   2) "1207.9869"
4) 1) "guangzhou"
   2) "1205.0747"
5) 1) "xiangshan"
   2) "195.0791"
6) 1) "shanghai"
   2) "0.0000"
7) 1) "beijing"
   2) "1067.7424"
   
   # GEOHASH 将二维的经纬度转换为一维的字符串,经过hash之后的结果
   #
   #     如果两个字符串越像,则代表越接近!
   #
127.0.0.1:6379[1]> GEOHASH china:city beijing shanghai
1) "wx4fbxxfke0"
2) "wtw36xbc1j0"
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一种高效的内存数据库,常用于缓存、队列、分布式锁等场景。以下是Redis的具体使用方法: 1. 安装RedisRedis提供了多种安装方式,包括源码编译安装、二进制包安装、Docker安装等。具体安装方式可以在Redis官网上查找。 2. 启动RedisRedis启动方式有多种,可以使用命令行启动,也可以使用配置文件启动。 3. 连接RedisRedis提供了多种客户端,包括命令行客户端、GUI客户端、各种编程语言的客户端库等。使用客户端连接Redis之后,即可执行各种Redis命令。 4. Redis数据结构:Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等。不同的数据结构有不同的操作命令,需要根据实际需求选择合适的数据结构。 5. Redis命令:Redis提供了丰富的命令,包括数据操作命令、事务命令、脚本命令、服务器命令等。使用Redis命令可以对数据进行增删改查等操作。 6. Redis持久化:Redis支持两种持久化方式,分别是RDB快照和AOF日志。RDB快照是将Redis内存中的数据定期保存到磁盘上,AOF日志是将Redis执行的每一条命令记录到磁盘上。持久化可以保证Redis重启后数据不会丢失。 7. Redis集群:Redis提供了多种集群方案,包括主从复制、哨兵模式、集群模式等。使用Redis集群可以提高数据的可用性和可靠性。 以上是Redis的具体使用方法,需要根据实际需求选择合适的方式。同时,需要注意Redis的性能和安全等问题,避免出现性能瓶颈和安全漏洞。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值