代码之家  ›  专栏  ›  技术社区  ›  Redeemer

Redis。不同键中两个成员之间的距离

  •  3
  • Redeemer  · 技术社区  · 7 年前

    我在redis中有两个键(geo zset),第一个是“驱动程序”,第二个是“订单”,里面有成员。 手册 https://redis.io/commands/geodist

    3 回复  |  直到 6 年前
        1
  •  7
  •   for_stack    7 年前

    没有内置的方法可以做到这一点。但是,您可以尝试以下两种解决方案。

    1. 使用 GEOPOS GEOSET
    2. 同时保存驱动程序和订单 地理集 ,例如。 GEOADD geo long1 lat1 driver:id , GEOADD geo long2 lat2 Order:id
        2
  •  2
  •   marvel308    7 年前

    由于地理集是排序集,您可以通过ZUNIONSTORE创建临时键,然后对这些键执行操作

        3
  •  1
  •   ip.    3 年前

    > ZUNIONSTORE result 2 DRIVERS ORDERS aggregate min
    > GEODIST result "driver_1" "order_1" km
    

    注意:aggregate min选项是必需的,否则出现在多个集合中的任何元素都将聚合其分数。对于地理空间数据,这将导致点移动其经度和纬度位置。