网约车与出租车
几毫秒内就能找到附近的司机,派单锁防止重复预订。
在半径或矩形范围内查找最近的司机、门店或设备,实时位置每隔几秒更新一次。
每次更新都会替换该司机之前的位置。
使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。
为乘客匹配最近的司机,或为顾客匹配最近且有货的门店,需要对成千上万个移动中的位置有最新的视图,并在几毫秒内给出答案。带空间索引的关系型数据库难以承受每秒这么多的更新。
位置存放在地理空间索引中。每位司机每隔几秒用 GEOADD 更新自己的位置,GEOSEARCH 返回半径或矩形范围内的所有对象,由近到远排列,并附带距离。同一个索引还能回答门店查找和配送区域查询。
每次更新都会替换该司机之前的位置。
GEOADD drivers:berlin 13.4050 52.5200 driver:17 13.3889 52.5170 driver:23查找 3 km 内最近的五位司机,由近到远。
GEOSEARCH drivers:berlin FROMLONLAT 13.4000 52.5190 BYRADIUS 3 km ASC COUNT 5 WITHDIST锁定这位司机,两位乘客不会叫到同一辆车。
SET offer:driver:17 rider:42 NX EX 15索引中两个成员之间的距离。
GEODIST drivers:berlin driver:17 driver:23 km几毫秒内就能找到附近的司机,派单锁防止重复预订。
订单备好时,为其匹配餐厅附近的骑手。
顾客能看到地图视图周围矩形范围内最近的门店。
GEOADD 按经度和纬度添加或更新成员。
GEOADD围绕一个点或一个成员,按距离排序,并限制数量。
GEOSEARCHGEOSEARCHSTORE成员之间的距离,单位由您选择。
GEODISTGEOPOS用您熟悉的有序集合命令删除和统计成员。
ZREMZCARD地理空间索引就是一个有序集合,因此用 ZREM 删除该成员即可。
可以。GEOSEARCH BYBOX 接收围绕某个点或成员的宽度和高度。
米、千米、英尺和英里。