Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将redis用于地理空间(稳定版)_Java_Redis_Geolocation_Geocoding_Geospatial - Fatal编程技术网

Java 将redis用于地理空间(稳定版)

Java 将redis用于地理空间(稳定版),java,redis,geolocation,geocoding,geospatial,Java,Redis,Geolocation,Geocoding,Geospatial,我试图在Redis上建立一个模型,让所有附近的用户输入经度和纬度 这意味着我需要了解如何向redis插入键、值以及应该使用哪种数据结构 另一方面,我应该如何在redis中通过给定的长纬度输入搜索附近的用户 我知道它在Redis 3.2上可用。但我们仍在使用上一代redis(3.0.3) 谢谢,, 雷 因此,对于该输入:key:userId值Redis地理数据在地理集合中组织(由排序集合支持)。将用户ID与地理数据关联的方法非常适合Redis地理支持 出于分区原因,您可以为每个(域?/国家?)维护

我试图在Redis上建立一个模型,让所有附近的用户输入经度和纬度

这意味着我需要了解如何向redis插入键、值以及应该使用哪种数据结构

另一方面,我应该如何在redis中通过给定的长纬度输入搜索附近的用户

我知道它在Redis 3.2上可用。但我们仍在使用上一代redis(3.0.3)

谢谢,, 雷


因此,对于该输入:key:userId值

Redis地理数据在地理集合中组织(由排序集合支持)。将用户ID与地理数据关联的方法非常适合Redis地理支持

出于分区原因,您可以为每个(域?/国家?)维护一个地理位置集。我找不到有关排序集大小限制的任何信息。Redis散列可以
2^32-1
字段值对,我不确定这是否适用于排序集。因此,为了简单起见,现在您有了一个由
标识的集合,其中包含一些与地理位置关联的成员:

[GEOADD](http://redis.io/commands/geoadd)某些集合名称long1 lat1 userId1 long2 lat2 userId2。。。longN latN userIdN
,然后该集合包含一些条目

示例

GEOADD key 8.6638775 49.5282537 "Weinheim" 8.3796281 48.9978127 "Office Tower" 8.665351, 49.553302 "Train-Station"
GEORADIUS key 8.6582861 49.5285695 1 KM
GEORADIUSBYMEMBER key "Train-Station" 5 KM
示例命令向用
键标识的地理集合添加三个位置

您现在可以使用
[GEORADIUS]进行查询(http://redis.io/commands/georadius)一些集合名为long lat radius m | km | ft | mi
,用于查询集合并检索long/lat中心周围半径内的所有成员

示例

GEOADD key 8.6638775 49.5282537 "Weinheim" 8.3796281 48.9978127 "Office Tower" 8.665351, 49.553302 "Train-Station"
GEORADIUS key 8.6582861 49.5285695 1 KM
GEORADIUSBYMEMBER key "Train-Station" 5 KM
示例命令查询1km半径内的所有元素,在本例中返回
Weinheim

也可以通过集合成员查询地理集合。表示如果使用集合中存在的位置,则可以使用该位置作为参考,而不是使用long/lat指定地理位置(示例用例:搜索userId X半径内的所有用户):

[GEORADIUSBYMEMBER](http://redis.io/commands/georadiusbymember)关键构件半径m | km | ft | mi

示例

GEOADD key 8.6638775 49.5282537 "Weinheim" 8.3796281 48.9978127 "Office Tower" 8.665351, 49.553302 "Train-Station"
GEORADIUS key 8.6582861 49.5285695 1 KM
GEORADIUSBYMEMBER key "Train-Station" 5 KM
命令的结果返回
火车站周围5 km半径范围内的集合成员。结果元素是:
火车站
温海姆

是第一个本机支持所有Geo命令的Java客户端。您可以找到单元测试,它演示了API的用法


请注意,示例命令仅显示地理功能的一个子集,请阅读Redis文档中的更多内容。

您的问题是基于意见的,但我会尝试一下。刚刚意识到您希望在3.0而不是3.2中使用地理功能,抱歉,错过了这一部分:(是的。谢谢你的回复。但我使用的是稳定版3.0。我们那里没有地理支持。我会尝试3.2,但我害怕在生产中使用测试版。你认为呢?3.2应该在9月~9月发布……你可以自己在分类集上实现地理,就像Matt和Salvatore所做的那样。有开放的在Redis上进行这种或其他地理建模的资源……如果可能的话,我肯定会开始使用3.2的功能,而不是开发我自己的功能(顺便说一句,如果您使用不稳定和查找/报告/修复问题,它会很快变得稳定;)@mp911de是否可以为此类条目设置时间段?例如,30秒后,我希望删除地理位置列表中的条目DAFAIK-否。您只能使整个集合()过期。没有ZEXPIRE之类的东西,但请随时提交问题