确定会话ID字符串长度以确保唯一性

时间:2009-04-24 11:59:49

标签: session

创建会话ID时,通常不会检查ID的唯一性。在处理数十亿条记录时,验证唯一性是一个很大的开销。

我想知道随机会话ID字符串的长度应该足以依赖于生产服务中的唯一性,例如像Gmail一样大。

欢迎任何其他建议保持适当的会话唯一性。

谢谢,

罗伊。

3 个答案:

答案 0 :(得分:9)

如果你有一个相当不错的随机数生成器,一个随机的128位ID(例如GUID)应该在实践中始终是唯一的(从数学上讲,有一个很小的机会会有重复,但相信我,它不会发生。在有一个重复的GUID之前,宇宙会在一个巨大的黑洞中崩溃。)

答案 1 :(得分:3)

不是随机生成自己的号码,为什么不......

  • 使用GUID(128位)
  • 使用包含年,月,日,小时,分钟,秒,毫秒或纳秒的字符串

如果您使用的是128位随机数,则获得重复的机会为1.40282366921e + 38。假设你的数字真的是随机的。

答案 2 :(得分:0)

某些用户数据的SHA-256哈希值以及当前有足够资源的全部时间应该可以获得足够独特的内容。