跳至主要内容

ULID

分布式系统的一个常见需求是标识符。ULID 是一种具有良好特性的全局唯一且可排序的标识符。它们是 128 位的值,编码为 26 个字符的字符串,并且还编码了时间戳。它们与 Deno KV 非常契合。

在 Github 上编辑
标准库包含用于生成 ULID 的函数。
import { ulid } from "jsr:@std/ulid";
要生成 ULID,只需调用该函数即可。
console.log(ulid());
console.log(ulid());
console.log(ulid());
ULID 也可以从时间戳生成。这对于从其他系统迁移很有用。
const timestamp = Date.now();
console.log(ulid(timestamp));
console.log(ulid(timestamp));
console.log(ulid(timestamp));
给定 ULID,您可以获取时间戳。
import { decodeTime } from "jsr:@std/[email protected]/mod.ts";
const myULID = ulid();
console.log(decodeTime(myULID));
可选地,如果您不在分布式系统上并且想要单调的 ULID,可以使用单调 ULID 生成器。
import { monotonicUlid } from "jsr:@std/[email protected]/mod.ts";
console.log(monotonicUlid(150000)); // 000XAL6S41ACTAV9WEVGEMMVR8
console.log(monotonicUlid(150000)); // 000XAL6S41ACTAV9WEVGEMMVR9
console.log(monotonicUlid(150000)); // 000XAL6S41ACTAV9WEVGEMMVRA

使用 Deno CLI 在本地运行 此示例

deno run https://docs.deno.org.cn/examples/ulid.ts

其他资源