ma1*_*w28 3 indexing geolocation geospatial sunspot redis
我正在与Sinatra和Redis 在Facebook上重建恋人,我想要:
每个用户都有两个Redis有序集(reqSent&reqRecv),用于存储uid.在SCORE我们为了通过请求是time(UNIX时间戳)提出请求.我使用有序集而不是列表,因为用户可能只将请求类型(rid)编码为数字并添加到uid之前.(rid | uid)例如,对于uid = 100的用户,我们可能会:
100:reqSent => ["1|123", "2|123", "2|134"] # format: ["rid|tid"]
100:reqRecv => ["3|343", "5|142", "4|2224"] # format: ["rid|uid"]
Run Code Online (Sandbox Code Playgroud)
MongoDB原生支持地理空间索引,所以我想改用它.
否则,我应该如何使用Redis实现地理空间索引?我应该用太阳黑子(localsolr)吗?显然,你可以使用Redis的太阳黑子.
我喜欢避免多个平台,并使用redis实现了类似的功能.地理空间索引与在redis中索引其他任何东西并没有什么不同.您只需要一个函数将lat/long转换为覆盖适当区域的单个数字,然后使用数字作为包含该区域中所有用户的集合的键.如果您选择了右侧区域,则检索该组以及可能的某些邻居应该为您提供适当数量的用户来运行实际距离计算以进行最终过滤/排序.
地理空间查询的一般情况很难实现,但您不需要它,而redis无论如何都是错误的ad hoc查询平台.