需求为获取附近的店铺的推荐信息,这就要求获取地理位置,在数据库中存储有如下格式的地理信息
x和y分别表示店铺的地理坐标,导入到redis 中,具体代码如下:
这里主要说明几点:
1.获取数据库中的全部数据,可以使用 service.list()的方法
2.stream流的collect的方式,可以自动返回一个按照指定字段分类的结果集合
3.在想redis中插入数据的时候采用批量插入的方式也就是说插入的是
List<RedisGeoCommands.GeoLocation<String>> locations
@Test
void changeGeo(){
//查询店铺信息
List<Shop> shops = shopService.list();
//根据shop的类型来分类
Map<Long, List<Shop>> shopCollect = shops.stream().
collect(Collectors.groupingBy(Shop::getTypeId));
//分批写入redis
for (Map.Entry<Long, List<Shop>> entry : shopCollect.entrySet()) {
//获取类型id
String key = RedisConstants.SHOP_GEO_KEY + e