在滴滴打车、美团外卖等需要处理海量位置信息的LBS(Location-Based Services,基于位置的服务)应用中,Redis 主要通过其内置的 GEO(地理位置)数据结构来实现“查找附近3公里范围内的司机”这一功能。 Redis GEO 是在 Redis 3.2 版本引入的,下面我将从指令使用、底层原理、以及真实工业场景下的架构设计三个维度为你深度剖析。 --- 一、 Redis 是如何存储和查询的?(基础用法) 1. 存储司机位置: 当司机打开滴滴App,手机会以极高的频率(例如每35秒)向服务器上报一次GPS坐标。后端接收到坐标后,会写入 Redis。 命令格式: 实际应用示例: 假设我们将北京市的在线空闲司机存在一个特定的 key 中: 注意:如果司机的坐标发生变化,再次执行 即可更新其位置。 2. 查询附近3公里的司机: (Redis 6.2+ 推荐) 当乘客发起打车请求时,系统会获取乘客当前的坐标,并向 Redis 发起查询。 (注:老版本使用 ,Redis 6.2 之后推荐使用功能更强大的 ) 命令格式: 参数解释: :查找3公里范围内的目标。 :按照距离由...