ULID
分布式系统的一个常见需求是标识符。ULID 是一种具有良好特性的通用唯一按字典序可排序标识符。它们是 128 位值,编码为 26 个字符的字符串,其中也包含了时间戳。它们与 Deno KV 配合得很好。
标准库包含一个用于生成 ULID 的函数。
import { ulid } from "jsr:@std/ulid@1";
要生成 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/ulid@1";
const myULID = ulid();
console.log(decodeTime(myULID));
或者,如果你不在分布式系统上并希望使用单调 ULID,你可以改用单调 ULID 生成器。
import { monotonicUlid } from "jsr:@std/ulid@1";
console.log(monotonicUlid(150000)); // 000XAL6S41ACTAV9WEVGEMMVR8
console.log(monotonicUlid(150000)); // 000XAL6S41ACTAV9WEVGEMMVR9
console.log(monotonicUlid(150000)); // 000XAL6S41ACTAV9WEVGEMMVRA