生成没有数据库的唯一编号

001*_*001 2 c# asp.net algorithm numbers uniqueidentifier

如何在没有数据库的情况下在c#中生成唯一编号?

(最多17位).

编辑:仅限数字.

Ric*_*ett 6

你可以看看Twitter的开源Snowflake项目的灵感,它解决了类似的问题.它是用Scala编写的,但简化版本在C#中编码非常简单.

前提是获取当前时间戳,并将其向左移位,使右侧位可用于一个简单的序列号,每次时间戳递增时,该序列号将重置为0.

通过使用比特长度,并改变时间戳的粒度(例如,决定是使用秒还是毫秒),您应该能够非常简单地生成可以容纳17位数的内容.