如何生成类似Facebook和Twitter的唯一整数ID
- 论坛
- 如何生成类似Facebook和Twitter的唯一整数ID
13 浏览
如何生成类似Facebook和Twitter的唯一整数ID
在搜索了SO和其他网站之后,我没有找到确凿的证据来解释Facebook、Twitter和Pinterest是如何生成它们的ID的。之所以需要这样做是为了避免URL冲突。通过完全不同的ID来避免冲突,因为记录不会达到千亿级别。
以Pinterest为例,前几位数字与用户ID相关,最后的6位数字表示保存ID,可能是自动递增的。
要创建类似的ID,但不是唯一的,我可以使用: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的任何建议吗?