Python3 uuid
import uuid
# uuid1()
>>> print(uuid.uuid1())
2cf0fa7e-48d9-11e6-93fb-c03fd53413ef
# uuid3()
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS, 'test'))
45a113ac-c7f2-30b0-90a5-a399ab912716
# uuid4()
>>> print(uuid.uuid4())
08bffbb6-05e1-41c1-8989-6aa07a4a5e5d
# uuid5()
>>> print(uuid.uuid5(uuid.NAMESPACE_DNS, 'test'))
4be0643f-1d98-573b-97cd-ca98a65347dd
使用經(jīng)驗
Python中沒有基于DCE的,uuid2可以忽略
uuid4基于隨機(jī)數(shù)存在概率性重復(fù),不推薦使用
對時間精確,并且是分布式計算可用uuid1
若有名字的唯一性要求,最好使用uuid3或uuid5
命名空間(不同的值)
NAMESPACE_DNS
NAMESPACE_URL
NAMESPACE_OID
NAMESPACE_X500
介紹
uuid1()---基于時間戳和主機(jī)id
基于分布式計算環(huán)境DCE(python中沒有這個函數(shù))
uuid3()---基于名字和MD5散列值
uuid4()---基于隨機(jī)數(shù)
uuid5()---基于名字的SHA-1散列值
總結(jié)
- 如果實在要求唯一,可以經(jīng)過時間戳uuid1得到一個uuid,之后再拼接上當(dāng)前時間戳進(jìn)行一次基于uuid3的計算,這樣的值就近乎于唯一了