关于生成随机id

同志们对于生成随机id有啥好的方法吗?

id·random
219 views
Comments
登录后评论
Sign In
·

前端吗?npm包uuid、nanoid

·

github 搜 uudidnanoid

·

uuid

·

snowflake ?

·

有什么额外要求吗,比如类型、格式?

常用的有UUID、雪花算法

·

如果你只要随机性,不怕碰撞(出现重复ID),那么随机算法生成数就行了。

如果你需要唯一性,不需要排序,长度没限制,那么 UUID 生成就行了,各种语言都有U UID 生成库。

如果你需要唯一性和可排序,不需要分布式场景,那么用数据库的自增ID就行了。

如果你需要唯一性、可排序、分布式高并发,那么就只有 snowflake 方案了。

snowflake 可以用 zookeeper 做分布式协调实现,或者利用 kubernetes 的 statefulset 的 ID 做 workerId 实现

·

uuid或者偷懒一点儿时间戳加随机数

·

网上应该也有不少包,之前自己写过一个js版的

const getGuid = () => {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    const r = (Math.random() * 16) | 0
    const v = c === 'x' ? r : (r & 0x3) | 0x8
    return v.toString(16)
  })
}