如何生成类似Facebook和Twitter的唯一整数ID

13 浏览
0 Comments

如何生成类似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的任何建议吗?

0