Redis 的地理位置类型(Geo)在实际应用中有着广泛的应用场景。下面将介绍几个常见的应用场景,并详细说明如何使用地理位置类型来实现
目前市面上使用的大多数交友软件,都有一个【附近的人】功能,通过该功能可以快速发现自己身边的用户进行添加交流等。
我们首先需要记录用户的地理位置,在用户登录平台时,需要更新用户的地理位置:
GEOADD users <longitude> <latitude> <user_id>
上述命令将用户的地理位置信息存储在名为 “users” 的地理位置类型中,并将用户的唯一标识符设置为成员名
当需要查找附近的人时,可以使用 georadius 命令进行查询。关于 georadius 命令介绍:
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
参数说明:
例如,我们查询附近的人,可以使用以下命令:
GEORADIUS users 116.404177 39.909652 1000 m
上述命令将返回距离我们指定地理位置 1000 米范围内的用户信息,可以根据需要设定合适的半径来限制查询范围
我们也可以使用 georadiusbymember 命令来查询附近的人,与 georadius 命令不同的是,georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点,例如我们登录了平台,需要记录自身的地理位置:
GEOADD users 116.404177 39.909652 "123456789"
其中 “123456789”是此用户的唯一标识,那此用户查询附近的人的命令为:
GEORADIUSBYMEMBER users 123456789 1000 m
上述命令将返回距离我们指定 “123456789” 元素的地理位置为中心点 1000 米范围内的用户信息
当我们打开美团 APP 点餐的时候,会有一个下拉选项选择多少范围内的商家进行点餐,我们同样可以使用 Redis GEO 类型实现此功能
GEOADD places <longitude> <latitude> <place_id>
我们需要在商家入驻的时候,将商家的地理位置录入系统中,并同步更新到 Redis 中
GEORADIUS places <longitude> <latitude> <radius> m
通过指定周边范围,就能筛选周边的商家进行点餐了
如您在阅读中发现不足,欢迎留言!!!