背景
从公众号推文看到不少博主推荐使用 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)