如何生成唯一的纯整数ID,如Facebook Twitter
在搜索SO和其他网站后,我未能拿出确凿的证据来证明Facebook,Twitter和Pinterest如何生成他们的ID。需要这样做的原因是为了避免URL冲突。移动到完全不同的 ID 将防止这种情况,因为不会有千万亿的记录。
- Facebook.com/username/posts/ 362095193814294
- Pinterest.com/pin/ 62487513549577588
- Twitter.com/#!/username/status/ 17994686627061761
如果您以Pinterest为例,前几个数字与用户ID相关,最后6个左右的数字表示保存ID,这可能是自动增量。
要创建一个类似的ID,但不是唯一的,我可以使用:.这里的问题是它不是唯一的,例如:vs. .这两者是相同的。只需合并两组唯一的数字,仍然会产生重复的结果。投入到组合中基本上可以修复重复项,但这似乎不是一个很好的做法。base_convert(user_id.save_id, 16, 10)
base_convert(15.211, 16, 10)
base_convert(152.11, 16, 10)
uniqid()
更新:Twitter似乎使用了这个:https://github.com/twitter/snowflake
关于生成唯一ID的任何建议,如上面的示例所示?