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博客搜索:标题关键字。以获取全部资料 ❤