Redis geo(附近的人)

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);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值