随笔 - 56  文章 - 0  评论 - 1  阅读 - 42035

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位





posted on   苦大师  阅读(769)  评论(0编辑  收藏  举报
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示