Java工程使用ulid初体验

朱治龙
2024-09-05 / 0 评论 / 23 阅读 / 正在检测是否收录...

ULID

背景

从公众号推文看到不少博主推荐使用 ulid 替换 uuid,提及的 ulid 的优点如下:

1、 全局唯一性 :通过结合时间戳和随机数,ULID能够确保生成的标识符在全球范围内是唯一的。

2、 可排序性 :由于ULID中包含了时间戳信息,因此它们可以按照时间顺序进行排序,这在数据处理和分析中非常有用。

3、 高性能 :ULID的生成速度远快于传统的UUID,且其编码方式更为高效。

4、 易读性 :虽然ULID也是由一串字符组成,但其采用的编码方式使得它相对更易于人类阅读和记忆。

ULID(Universally Unique Lexicographically Sortable Identifier)是一种用于生成全局唯一、可按字典序排序的标识符的格式。ULID结合了时间戳和随机数的特性,旨在提供高性能、低碰撞、可排序和易读的标识符。

引入依赖

<dependency>
    <groupId>com.github.f4b6a3</groupId>
    <artifactId>ulid-creator</artifactId>
    <version>5.2.3</version>
</dependency>

生成随机字符串

  Ulid ulid = UlidCreator.getUlid();
  String randomId = ulid.toString();

测试代码

package net.x2m.pms.collect;

import com.github.f4b6a3.ulid.Ulid;
import com.github.f4b6a3.ulid.UlidCreator;

public class UlIdTest {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            Ulid ulid = UlidCreator.getUlid();
            System.out.println(ulid.toString());
        }
    }
}

运行以上代码后生成示例数据如下:

01J70X9YDC7YSTJAPWPDFDH2CK
01J70X9YQS0NCCFCWEZ5RVXEXP
01J70X9YQS48ES2ETYT7FHQG2H
01J70X9YQTSGF792XY07W2TDZ2
01J70X9YQTEW2KTFX5VJRSAT9R
01J70X9YQTFBPZCMJWDQVNV0MA
01J70X9YQTSEX81YK0S7CB6X6W
01J70X9YQV4XAR9MHDN2RDJH8A
01J70X9YQV8HMMX2DYZ2Q5Y559
01J70X9YQV0R5PN0P0536NZM4Z
0

评论 (0)

取消