• 【Redis GEO】2、地理位置类型的应用场景


    Redis 的地理位置类型(Geo)在实际应用中有着广泛的应用场景。下面将介绍几个常见的应用场景,并详细说明如何使用地理位置类型来实现

    1、附近的人

    目前市面上使用的大多数交友软件,都有一个【附近的人】功能,通过该功能可以快速发现自己身边的用户进行添加交流等。

    • 记录用户地理位置

    我们首先需要记录用户的地理位置,在用户登录平台时,需要更新用户的地理位置:

    GEOADD users <longitude> <latitude> <user_id>
    
    • 1

    上述命令将用户的地理位置信息存储在名为 “users” 的地理位置类型中,并将用户的唯一标识符设置为成员名

    • 附近用户查询

    当需要查找附近的人时,可以使用 georadius 命令进行查询。关于 georadius 命令介绍:

    GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
    
    • 1

    参数说明:

    • m :米,默认单位。
    • km :千米。
    • mi :英里。
    • ft :英尺。
    • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
    • WITHCOORD: 将位置元素的经度和纬度也一并返回。
    • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
    • COUNT 限定返回的记录数。
    • ASC: 查找结果根据距离从近到远排序。
    • DESC: 查找结果根据从远到近排序。

    例如,我们查询附近的人,可以使用以下命令:

    GEORADIUS users 116.404177 39.909652 1000 m
    
    • 1

    上述命令将返回距离我们指定地理位置 1000 米范围内的用户信息,可以根据需要设定合适的半径来限制查询范围

    我们也可以使用 georadiusbymember 命令来查询附近的人,与 georadius 命令不同的是,georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点,例如我们登录了平台,需要记录自身的地理位置:

    GEOADD users 116.404177 39.909652 "123456789"
    
    • 1

    其中 “123456789”是此用户的唯一标识,那此用户查询附近的人的命令为:

    GEORADIUSBYMEMBER users 123456789 1000 m
    
    • 1

    上述命令将返回距离我们指定 “123456789” 元素的地理位置为中心点 1000 米范围内的用户信息

    2、周边搜索

    当我们打开美团 APP 点餐的时候,会有一个下拉选项选择多少范围内的商家进行点餐,我们同样可以使用 Redis GEO 类型实现此功能

    • 记录商家位置
    GEOADD places <longitude> <latitude> <place_id>
    
    • 1

    我们需要在商家入驻的时候,将商家的地理位置录入系统中,并同步更新到 Redis 中

    • 周边商家查询
    GEORADIUS places <longitude> <latitude> <radius> m
    
    • 1

    通过指定周边范围,就能筛选周边的商家进行点餐了

    如您在阅读中发现不足,欢迎留言!!!

  • 相关阅读:
    操作系统 —— 进程篇
    动态切换 Spring Boot 打包配置:使用 Maven Profiles 管理 JAR 和 WAR
    计算机毕业设计SSM电脑外设销售系统小程序【附源码数据库】
    面试必知的9个性能测试指标,你完全了解吗?
    LeetCode——1422.分割字符串的最大得分
    [附源码]Python计算机毕业设计宠物寄养管理系统
    C语言中的strcpy,strncpy,memcpy,memmove,memset函数strcmp
    Apt适配子修饰PEG-PLGA纳米粒/载CCR5抗体的PLGA纳米颗粒的研究制备
    【数据结构与算法学习】散列表(Hash Table,哈希表)
    Leetcode 1572.矩阵对角线元素之和
  • 原文地址:https://blog.csdn.net/qq_40065776/article/details/133078014