Redis使用(二)—— GEO位置与查周边

Redis使用(一)——hash保存与模糊查询

看本文章的前提是已掌握Redis的基础操作,如插入、读取、删除数据等

示例使用ShardedJedisPool操作,实际开发可以使用RedisTemplate

目录:

1.保存坐标

2.查询距离

3.查周边

4.应用场景

 

1.保存坐标

ShardedJedis jedis = shardedJedisPool.getResource();
//插入坐标 1.key:user_location  2.经度  3.纬度  4.标识
jedis.geoadd("user_location", 113.943765, 22.550899, "user1");
jedis.geoadd("user_location", 113.944511, 22.550736, "user2");
jedis.geoadd("user_location", 113.946056, 22.550741, "user4");
jedis.geoadd("user_location", 113.919664, 22.550561, "user5");

2.查询距离

//1.key  2.第一个用户标识  3.第二个用户标识 3.距离单位
jedis.geodist("user_location", "user1", "user5", GeoUnit.M)

3.查周边

//查询参数
GeoRadiusParam param = GeoRadiusParam.geoRadiusParam();
//如果需要查询距离,调用此方法
param.withDist();
//如果需要查询坐标,调用此方法
param.withCoord();

//查询坐标113.943765, 22.550899周围1000米范围内的数据
List<GeoRadiusResponse> radiusList = jedis.georadius("user_location", 113.943765, 22.550899, 1000, GeoUnit.M, param);

//遍历结果输出
for (GeoRadiusResponse radius : radiusList) {
    System.out.println("-------距离" + radius.getMemberByString() + "--                
  "+radius.getDistance() + "米");
}

4.应用场景

用过滴滴打车的都知道打开app,就会发现周边车辆,并且位置是实时变动的

这种数据量是很大的,如果实时位置信息全部存入数据库,对数据库压力很大,显然是不合理的,所以可以放入缓存,提高性能,车辆每次上报的位置信息先使用geoadd存入redis,用户进入app根据自己位置查询周边车辆位置即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值