MST
星途 面试题库

面试题:缓存设计:Redis GEO模块基础应用

假设你要使用Redis GEO模块缓存一些城市的地理位置信息,每个城市包含名称、经度和纬度。请描述如何使用Redis GEO命令来实现数据的存储和简单查询,比如查询某个城市的距离另一个城市50公里内的所有城市。
12.4万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试
  1. 数据存储
    • 使用GEOADD命令来存储城市的地理位置信息。命令格式为:GEOADD key longitude latitude member [longitude latitude member ...]
    • 例如,要存储北京(经度:116.4074,纬度:39.9042)的信息,假设keycity_geo,则命令如下:
    GEOADD city_geo 116.4074 39.9042 北京
    
    • 如果要一次性存储多个城市,可以在命令后继续添加城市的经度、纬度和名称,例如:
    GEOADD city_geo 121.4737 31.2304 上海 113.2644 23.1291 广州
    
  2. 简单查询(查询某个城市距离另一个城市50公里内的所有城市)
    • 使用GEORADIUS命令,命令格式为:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
    • 假设要查询距离北京50公里内的所有城市,命令如下:
    GEORADIUS city_geo 116.4074 39.9042 50 km
    
    • 如果希望返回结果中包含距离信息,可以添加WITHDIST参数:
    GEORADIUS city_geo 116.4074 39.9042 50 km WITHDIST
    
    • 如果还希望返回结果中包含城市的坐标信息,可以再添加WITHCOORD参数:
    GEORADIUS city_geo 116.4074 39.9042 50 km WITHDIST WITHCOORD