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

时间:2010-12-10 11:04:05

标签: c# asp.net algorithm numbers uniqueidentifier

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

(最多17位)。

编辑:仅限数字。

2 个答案:

答案 0 :(得分:6)

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

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

通过使用比特长度,并改变时间戳的粒度(例如,决定是使用秒还是毫秒),你应该能够生成一些可以很简单地适合17位数的东西。

答案 1 :(得分:0)

您可以使用GUID,GUID(全局唯一标识符)是一个128位整数,可用于唯一标识某些内容。

System.Guid.NewGuid()