106 字

审查自己项目的时候,发现自己一直用开的 UUID 库没有实际测试过性能,所以找了下网上的文章和库列表,就有了今天这一篇文章.

测试代码:

供使用参考,大量摘抄自 (Generating good unique ids in Go):

Package Id Format
github.com/segmentio/ksuid 0pPKHjWprnVxGH7dEsAoXX2YQvU 4 位时间 (单位秒) + 16 位随机数
github.com/rs/xid b50vl5e54p1000fo3gh0 4 位时间 (单位秒) + 3 位设备号 + 2 位进程号 + 3 位随机数
github.com/kjk/betterguid -Kmdih_fs4ZZccpx2Hl1 8 位时间 (单位毫秒) + 9 位随机数
github.com/sony/sonyflake 20f8707d6000108 ~6 位时间 (取 10 毫秒为一个单位) + 1 位顺序序列 + 2 位设备号
github.com/oklog/ulid 01BJMVNPBBZC3E36FJTGVF0C4S 6 位时间 (单位毫秒) + 8 位随机数
github.com/chilts/sid 1JADkqpWxPx-4qaWY47~FqI 8 位时间 (单位纳秒) + 8 位随机数
github.com/lithammer/shortuuid dwRQAc68PhHQh4BUnrNsoS UUID v4/5,支持自定义字符
github.com/satori/go.uuid 5b52d72c-82b3-4f8e-beb5-437a974842c UUID v1/2/3/4/5,符合 RFC 4122 和 DCE 1.1
github.com/google/uuid c01d7cf6-ec3f-47f0-9556-a5d6e9009a43 Google 公开的实现,符合 RFC 4122 和 DCE 1.1
github.com/matoous/go-nanoid Uakgb_J5m9g-0JDMbcJqLJ 更短的字符串,22 个字符,并且支持自定义字符和长度

引用:

Generating good unique ids in Go