• redis 生成分布式ID


    1、根据需求生成的ID,需要在32位范围中。
    // 应用程序 4核, 8G window.
    // redis 4核, 8G window.
    Map<Long,Long> map = new HashMap<>();
    // 测试redis 在60万的并发下,获取ID
    Long start = System.currentTimeMillis();
    int i=0;
    while(i<600000){
    fixedThreadPool.execute(new Runnable() {
    @Override
    public void run() {
    Long value = redisTemplate.opsForValue().increment(redisKey,1);
    if (null != map.get(value)) {
    System.out.println(value+"已经存在!");
    }else{
    map.put(value,value);
    }
    }
    });
    i++;
    }
    Long end = System.currentTimeMillis();
    System.out.println("finish! time="+(end-start));

    运行结果:finish! time=2904

    线程增加10倍,当把线程数量改成了600万,花费了 finish! time=34245。等待了34秒来是用户无法接受。


    算法:
     twitter 提供了 snowflake算法 64位

    
    



  • 相关阅读:
    函数式编程
    JSONP
    用javascript实现base64编码器
    图片Ping
    CORS
    深入理解ajax系列第五篇——进度事件
    文件File
    深入理解ajax系列第四篇——FormData
    Blob
    深入理解ajax系列第三篇——响应解码
  • 原文地址:https://www.cnblogs.com/liuwd/p/10918788.html
Copyright © 2020-2023  润新知