鍍金池/ 問答/Java  PHP  Python  數(shù)據(jù)庫/ 如何設(shè)計(jì)生成用戶uid?

如何設(shè)計(jì)生成用戶uid?

(手機(jī)版沒法上傳圖片,今晚回去補(bǔ)一下)

一般uid如上圖是一串固定長度數(shù)字,請(qǐng)問是如何生成的?在數(shù)據(jù)庫存儲(chǔ)uid的時(shí)候,一般不都是從1開始然后自增長的嗎?如何實(shí)現(xiàn)這種固定長度的id?現(xiàn)在自己有一種思路不知道對(duì)不對(duì):在數(shù)據(jù)庫中從1開始自增長uid,然后會(huì)出現(xiàn)id為1和21這種位數(shù)不同的情況,顯示的時(shí)候,通過一定的加密算法將不固定長度的uid加密成固定長度uid進(jìn)行顯示嗎?

回答
編輯回答
編輯回答
下墜

了解下 hashids

2018年6月18日 02:34
編輯回答
互擼娃

了解下雪花算法。

2017年1月13日 04:35
編輯回答
夏夕

固定長度很好辦:

>>> '%012d'%1
'000000000001'
>>> '%012d'%21
'000000000021'
>>> '%012d'%21222
'000000021222'
>>>

或者存數(shù)據(jù)庫時(shí):

>>> import uuid
>>> uuid.uuid4() # 隨機(jī)生成一個(gè) uuid
UUID('01ff74a3-e22f-4eaa-b268-b040c13e2313')
>>> str(_)
'01ff74a3-e22f-4eaa-b268-b040c13e2313'
>>>
2018年1月3日 00:34
編輯回答
囍槑
import uuid
uid = uuid.uuid1()
2018年8月11日 15:27