ULID
在 Github 上編輯
分散式系統的一個常見需求是識別符。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