短uuid

一个短的唯一id生成方法,解决uuid过长的问题

爱⌒轻易说出口 提交于 2020-04-06 21:54:00
前言:最近,在做用redis存储用户消息的时候,采用的结构如下: Key value Msg+userId+time 消息内容 但是如果在同一时间里面,有很多人并发发送了消息给用户怎么办呢?也就是说只是在key后面加时间 我的时间格式是yyyy-MM-ddHH:mm:ss,这样子万一有重复key怎么办,消息就会被覆盖了 于是想到在后面加uuid,但是uuid有30多位啊,我只需要简单的短的一个避免重复的id就可以了。 于是写了下面代码,并做了测试,发现在100次,每次生成10万条的情况下,都没有重复,这里没有测试100万,1000万条,因为我觉得如果你需要在这种极端情况下的话,你还是需要使用长的uuid的。 下面是8位的短id,基本可以抵抗10万条重复,如果需要9位,11位,16位的,可以如法炮制 public static void main(String args[]){ byte []bytes=new byte[8]; Random random=new Random(); HashSet<String>hash=new HashSet<>(); for(int j=0;j<100;j++) { hash.clear(); for (int i = 0; i < 100000; i++) { random.nextBytes(bytes); String s =