随机生成经纬度并写入Redis

随机生成经纬度并写入Redis

    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
        this.stringRedisTemplate = stringRedisTemplate;
    }

    /**
     * 有效经度为 -180 到 180 度
     * 有效纬度为 -85.05112878 到 85.05112878 度
     *
     * @throws IOException IO异常
     */
    @Test
    public void randomGeoLocationTest() throws IOException {
        String geoKey = "location_key";
        byte[] key = geoKey.getBytes(StandardCharsets.UTF_8);
        File file = new File("D:/tmp/mac_369M.txt");
        List<String> allMac = FileUtils.readLines(file, StandardCharsets.UTF_8);
        log.info("MAC总数:{}", allMac.size());
        List<List<String>> partition = Lists.partition(allMac, 10000);

        int count = 0;
        for (List<String> macList : partition) {
            stringRedisTemplate.executePipelined((RedisCallback<Void>) connection -> {
                connection.openPipeline();

                for (String mac : macList) {
                    connection.geoCommands().geoAdd(key, new GeoLocation<>(mac.getBytes(StandardCharsets.UTF_8),
                            new Point(ThreadLocalRandom.current().nextDouble(-180D, 180D), ThreadLocalRandom.current().nextDouble(-85.05112878D, 85.05112878D))));
                }

                return null;
            });
            count += macList.size();
            log.info("已入库MAC总数:{}", count);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值