zoukankan      html  css  js  c++  java
  • 【Redis】特殊数据类型

    这是在redis 3.2版本推出的,推算地理位置的信息,两地之间的距离,周围方圆的人等等场景都可以用它实现。

    一、geoadd

    将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。

    这里可以借助网上的一些查询经纬度的工具来获取数据。

    geoadd china:city 121.472644 31.231706 shanghai
    geoadd china:city 120.619585 31.299379 suzhou
    geoadd china:city 116.405285 39.904989 beijing
    geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu
    

    china:city这个key里,添加了5个地方的经纬度:上海、苏州、北京、广州、广州海珠区。

    二、geopos

    从key里返回所有给定位置元素的位置(经度和纬度)。

    geopos china:city suzhou shanghai
    

    返回位置的坐标。

    三、geodist

    返回两个给定位置之间的距离。

    如果两个位置之间的其中一个不存在, 那么命令返回空值。

    指定单位的参数 unit 必须是以下单位的其中一个:

    • m 表示单位为米(默认)。
    • km 表示单位为千米。
    • mi 表示单位为英里。
    • ft 表示单位为英尺。
    geodist china:city suzhou shanghai km
    

    四、georadius

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

    georadius china:city 121.49295 31.22337 30 km
    

    我以 上海黄浦区的坐标121.49295 31.22337为中心,寻找30km之内的城市。

    再远点,100km之内,还可以找到suzhou,加上withdist显示出距离。

    加上withcoord可以返回经纬度。

    再加上count,只返回我指定的数量。

    georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1
    

    五、georadiusbymember

    这个命令和 georadius命令一样, 都可以找出位于指定范围内的元素。

    但是这里不是指定中心点坐标,而是指定以哪个元素为中心点。

    georadiusbymember china:city suzhou 100 km withdist
    

    这里以元素suzhou为中心点,找周五100km内的其他元素。

    六、geohash

    一个或多个位置元素,用hash表示。

    geohash china:city suzhou shanghai
    

    返回11个字符的Geohash字符串,代表当前经纬度的字符串,就是换了个形式,将二维的经纬度转化成了一个一维的字符串。

    如果上图结构里的2个字符串越接近,则2个位置距离也越近,这些了解即可。

    geo的底层原理还是zset,我们可以使用zset命令操作geo,比如移除geo里的城市。

    zrem china:city haizhuqu
    

    更多的操作,可以自己亲自试试。

    --不要用肉体的勤奋,去掩盖思考的懒惰--
  • 相关阅读:
    RS交叉表按照预定的节点成员排序
    Open DJ备份与恢复方案
    SQLServer2008备份时发生无法打开备份设备
    数据仓库备份思路
    SQLServer代理新建或者编辑作业报错
    Transfrom在64bit服务下面无法运行
    ActiveReport开发入门-图表的交互性
    ActiveReport开发入门-列表的交互性
    /etc/fstab 参数详解(转)
    CentOS7 查看硬盘情况
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/14898069.html
Copyright © 2011-2022 走看看