[英]how to generate a short unique id like imgur in python?
什么算法用於生成短唯一ID? 例如 1000 萬個 7 個字符的 id 沒有沖突。 許多網站,如“9gag.com”、ifunny.co、bitly.com 等使用統一資源定位器的短 id 如何生成這樣的 id 幾乎沒有沖突。
您可以在 python (>= 3.6) 中嘗試secrets
模塊
import secrets
secrets.token_hex(nbytes=8)
secrets.token_urlsafe(nbytes=8)
...
我也做了測試,我沒有發現每幾百萬個生成的令牌有任何碰撞(但不保證沒有碰撞)。
def test_uniqueness(num_iter, fn, fn_kwargs):
"""
would output list of tokens that collide,
or empty list if no collision
"""
collisions = {}
out = []
for idx in range(num_iter):
uid = fn(**fn_kwargs)
if collisions.get(uid, None):
out.append(uid)
else:
collisions[uid] = True
return out
test_uniqueness(1000000, secrets.token_urlsafe, {'nbytes':8})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.