按时间对地理空间数据进行排序发布于Redis

问题描述

我正在尝试对从地半径中获取的一堆数据进行排序,以便根据发布数据的时间进行逆向排序。因此,如果我发布item1,ite3,item2,item4,并且它们都在georadius命令的范围内,则无论距离如何,都应返回item4,item2,item3和item1。如何使用redis的地理空间命令执行此操作?谢谢!

解决方法

首先,您需要保存每个项目的发布时间。例如,您可以为每个项目设置一个键-值对,其中键为项目名称,值为发布时间。

发布项目时,将其与地理信息一起添加到GEO结构中,并记录发布时间:

  1. GEOADD geo lng lat item1
  2. SET posttime:item1 timestamp-in-seconds

要进行搜索时,请执行以下步骤:

  1. GEORADIOUS命令与STORE选项一起使用可将结果保存到排序集中。让我们将排序后的集合命名为临时结果
  2. 使用SORT命令以发布时间对温度结果进行排序:SORT temp_result BY posttime:* DESC