这里写目录标题
Redis geo
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有:
geoadd:添加地理位置的坐标。
geopos:获取地理位置的坐标。
geodist:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。
redis的语法就不介绍了,感兴趣的朋友可以去这里看,下面进入今天的正题
RedisTemplate
Spring-data-redis 的RedisTemplate 有很多方法,感兴趣的朋友可以去API看一下。
附近的人实现
/**
* 把数据放进redis
*/
@Test
public void add(){
Long addedNum = redisTemplate.opsForGeo().add(cityGeoKey,new Point(106.655709,26.655588),"贵州");
System.out.println(addedNum);
}
/**
* 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
* @param lng 经度
* @param lat 纬度
* @param size 数量
*/
@Test
public void testNearByXY(Double lng, Double lat, int size){
RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs()
.sortAscending()
.limit(size)
.includeDistance()
.includeCoordinates();
Circle circle = new Circle(new Point(lng, lat), 半径);
GeoResults<RedisGeoCommands.GeoLocation<String>> results = redisTemplate.opsForGeo().radius(cityGeoKey,circle,args);
System.out.println(results);
}