Geo数据结构的基本用法
redis在3.2版本后加入了对Geo的支持,Geo就是Geolocation,代表地理坐标。
redis中提供了一些命令帮助我们存储地理坐标信息,根据经纬度来检索数据,常见的有:
演示
1.添加坐标点
经纬度被转化成了score
2.计算两点之间的距离
3.返回某个坐标点的某个范围内的坐标点(由近及远)
4.查找某个地点的经纬度信息 / 经纬度信息对应的hash值
转化为 hash 值后可读性更好、存储空间更小
导入店铺信息到Geo
@Test
void loadShopData(){
//1.查询店铺信息
List<Shop> list = shopService.list();
//2.把店铺分组,按照typeId分组,typeId一致的放到一个集合
Map<Long, List<Shop>> map = list.stream().collect(Collectors.groupingBy(Shop::getTypeId));
//3.分批完成写入Redis
for(Map.Entry<Long,List<Shop>> entry : map.entrySet()){