如何设计生成用户uid?

(手机版没法上传图片,今晚回去补一下)

一般uid如上图是一串固定长度数字,请问是如何生成的?在数据库存储uid的时候,一般不都是从1开始然后自增长的吗?如何实现这种固定长度的id?现在自己有一种思路不知道对不对:在数据库中从1开始自增长uid,然后会出现id为1和21这种位数不同的情况,显示的时候,通过一定的加密算法将不固定长度的uid加密成固定长度uid进行显示吗?

阅读 7.8k
5 个回答
新手上路,请多包涵
import uuid
uid = uuid.uuid1()

固定长度很好办:

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

或者存数据库时:

>>> import uuid
>>> uuid.uuid4() # 随机生成一个 uuid
UUID('01ff74a3-e22f-4eaa-b268-b040c13e2313')
>>> str(_)
'01ff74a3-e22f-4eaa-b268-b040c13e2313'
>>>

了解下雪花算法。

新手上路,请多包涵

了解下 hashids

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题