IdUtil案例
演示了:UUID、nanoID、objectID、snowflake
public static void main(String[] args) {
System.out.println(IdUtil.fastUUID()); // 813bd123-69e9-42ae-97c4-2da7895235df
System.out.println(IdUtil.fastSimpleUUID()); // 5547f7f9f0d2428787cdba7b6bd61616
System.out.println(IdUtil.nanoId()); // y-E4JNXw_jURG0GE2sPV0
System.out.println(IdUtil.nanoId(10)); // z6xBGVGM-L
System.out.println(IdUtil.objectId()); // 6400442cdebadda465d32661
System.out.println(IdUtil.getSnowflake(1, 1).nextIdStr()); // 1631180428218077184
}
既然都整理ID生成工具,就在这里统一搜集整理一些常见的ID策略
常见ID生成策略
UUID
案例:144985ec-458d-49c5-8338-ba325eca5322
特点:无序、数字与小写英文、长度36位
缺点:无序、长度太长,超低概率可能会重复
❄️雪花算法(我觉得了解再多其他ID策略,还得是万能的雪花算法❄️)
特点:纯数字、自增、每秒26万个ID、长度19
雪花算法是推特公司开源的工具:想了解前往本站:https://www.zanglikun.com/2941.html
曾经有次面试问到我这个问题,问我雪花算法需要哪些参数。当时很久不用,属实遗忘了。一个是机器ID,另一个是数据中心ID(两个ID均是数字)。
保证线程安全,务必获取单例对象!上文案例就是单例对象,随便使用!
MongoDB唯一主键
这里是Hutool工具集成的MongoDB唯一ID生成,我才了解的。
特点:数字与小写英文、长度24
Redis自增主键策略
利用其单线程原子性 INCR与 INCRBY可以做,但是其需要调用网络传输redis命令以及响应。不使用!
特点:纯数字、自增
缺点:使用利用Java调用网络IO
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤