同志们对于生成随机id有啥好的方法吗?
前端吗?npm包uuid、nanoid
github 搜 uudid 、nanoid
uudid
nanoid
uuid
snowflake ?
有什么额外要求吗,比如类型、格式?
常用的有UUID、雪花算法
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) }) }