我们可以假设一下吗?它们是全球唯一的(跨所有Firebase)吗?有什么排序吗?客户是否重要?
是否有公共图书馆/文档,所以我也可以生成这些ID?
我指的是push
生成的那些答案 0 :(得分:5)
有blog post on it,as well as a Gist。
在博文中,这里是推送ID中的内容的核心:
推送ID包含120位信息。前48位是a 时间戳,这两者都减少了碰撞的机会并允许 连续创建推送ID以按时间顺序排序。时间戳 之后是72位随机性,这确保了即使是两位 人们在完全相同的毫秒内创建推送ID是极其重要的 不太可能生成相同的ID。对随机性的一个警告是 这是为了保留客户创建的时间顺序 在同一毫秒内的多个推送ID,我们只是'增加' 随机比特一个。
将我们的120位信息(时间戳+随机性)转换为 可以用作Firebase密钥的ID,我们基本上对它进行base64编码 转换为ASCII字符,但我们使用修改后的base64字母表 确保ID在订购时仍能正确排序 按字典顺序排列(因为Firebase键按字典顺序排序)。
另外值得注意的是,社区完成了几种不同语言的端口:
所以也许最好的学习方法是选择一种不在该列表上的语言并移植它!