美文网首页
利用 redis geo 实现附近门店功能

利用 redis geo 实现附近门店功能

作者: Newzer | 来源:发表于2023-03-22 17:40 被阅读0次

仅仅写了一个demo

func Handle() {
    //添加地址
    local1 := redis.GeoLocation{ //上海
        Name:      "J4828A2109240076",
        Longitude: 121.477106,
        Latitude:  31.261318,
    }
    // local2 := redis.GeoLocation{ //四川
    //  Name:      "J4828A2109240503",
    //  Longitude: 104.386720,
    //  Latitude:  31.111256,
    // }
    local2 := redis.GeoLocation{ //广西
        Name:      "J4828A2109240503",
        Longitude: 111.012977,
        Latitude:  25.848181,
    }

    local3 := redis.GeoLocation{ //广东
        Name:      "J4828A2109240460",
        Longitude: 113.535330,
        Latitude:  22.530372,
    }
    err := Redis.GeoAdd(Ctx, "cabinet", &local1, &local2, &local3).Err()
    if err != nil {
        fmt.Println("reis geo add 获取数据失败:", err)
        return
    }

    //计算两地距离
    distance, err := Redis.GeoDist(Ctx, "cabinet", "J4828A2109240076", "J4828A2109240503", "km").Result()
    if err != nil {
        panic(err)
    }
    fmt.Println("GeoDist: ", distance, "km")
    //当前位置,上海利物盛
    long := 121.348042
    lat := 31.306801

    radius, _ := Redis.GeoRadius(Ctx, "cabinet", long, lat, &redis.GeoRadiusQuery{
        Radius:    80000,
        Unit:      "km",
        WithCoord: true, // WITHCOORD参数,返回结果会带上匹配位置的经纬度
        WithDist:  true, // WITHDIST参数,返回结果会带上匹配位置与给定地理位置的距离。
        // WithGeoHash: true,  // WITHHASH参数,返回结果会带上匹配位置的hash值。
        Count: 4,      // COUNT参数,可以返回指定数量的结果。
        Sort:  "DESC", // 传入ASC为从近到远排序,传入DESC为从远到近排序。
    }).Result()
    for _, v := range radius {
        fmt.Println("GeoRadius: ", v)
    }
}
image.png

相关文章

  • 10.【Redis系列】Redis的高级应用-GeoHash

    Redis在3.2版本增加了GEO模板,意味着通过redis可以做附近的人,附近的门店,附近的商场这样的功能。 用...

  • 项目中Redis应用场景

    一、Redis GEO-实现附近的人 1.1 Redis GEO介绍 Redis GEO主要用于存储地理位置信息,...

  • Redis地理位置

    1.GEO Redis3.2版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇...

  • 使用 Redis 如何实现查询附近的人?「视频版」——面试突击

    面试问题 Redis 如何实现查询附近的人? 涉及知识点 Redis 中如何操作位置信息? GEO 底层是如何实现...

  • redis 学习(15)-- GEO

    GEO GEO 简介 Redis 3.2添加新特性 功能:存储经纬度、计算两地距离、范围计算等 基于ZSet实现 ...

  • redis geo地理位置的应用

    GEO功能在Redis3.2版本提供,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能...

  • Redis应用之GeoHash

    Redis 在 3.2 版本以后增加了地理位置 GEO 模块,意味着我们可以使用 Redis 来实现摩拜单车「附近...

  • 近水楼台 —— GeoHash

    Redis 在 3.2 版本以后增加了地理位置 GEO 模块,意味着我们可以使用 Redis 来实现摩拜单车「附近...

  • redis GEO数据结构

    Redis3.2版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地...

  • redis-geo

    redis-geo 介绍 算法看geo那个 内部实现就是zset(skiplist) 实例

网友评论

      本文标题:利用 redis geo 实现附近门店功能

      本文链接:https://www.haomeiwen.com/subject/sbkbrdtx.html