推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
kayseen
V2EX  ›  Python

生成 16 位长度的数字+字母编码组合,如果不使用保存 mysql 时设置 unique,怎么在生成的过程中确保唯一呢?

  •  
  •   kayseen · Feb 25, 2020 · 4792 views
    This topic created in 2448 days ago, the information mentioned may be changed or developed.
    20 replies  •  2020-02-28 16:53:18 +08:00
    kayseen
    kayseen
    OP
    Feb 25, 2020
    1
    比如年前的支付宝的福卡,每张卡都有一个大概 8 位长度的编码,且保证编码唯一,组合的可能性肯定超过需要的数量,但是对于重复性的处理是咋搞的啊
    shintendo
    shintendo
    Feb 25, 2020
    2
    参考 uuid 原理
    Varobjs
    Varobjs
    Feb 25, 2020 via Android
    3
    13 位时间戳,map 映射定义好的字母表,➕几个随机字母数字
    lxml
    lxml
    Feb 25, 2020
    4
    mini 版 雪花算法啊
    janxin
    janxin
    Feb 25, 2020
    5
    搜索关键词“分布式 唯一 ID”
    littlewing
    littlewing
    Feb 25, 2020
    6
    分布式唯一 ID 生成器
    loginbygoogle
    loginbygoogle
    Feb 25, 2020 via iPhone
    7
    多此一举
    mostkia
    mostkia
    Feb 25, 2020
    8
    我生成唯一 id 的算法是一般都是 MD5 (时间戳+盐)
    虽然依旧有极小概率会出现重复,但我感觉我的一生里应该不会碰到一次,所以没必要太过纠结
    formatex
    formatex
    Feb 25, 2020 via Android
    9
    不要求随机性的话这样:
    0000
    0001
    ....
    aaaa
    aaab
    aaac
    hihipp
    hihipp
    Feb 25, 2020
    10
    时间戳 + 用户标识,用 16 位 MD5 摘要算法。
    xuanbg
    xuanbg
    Feb 26, 2020
    13
    @mostkia
    @hihipp 你们这个不行啊,同一毫秒有两个请求咋办呀?

    如果不能通过算法保证唯一性,那就只能通过查表保证唯一性了。。。
    melkor
    melkor
    Feb 26, 2020 via iPhone
    14
    @xuanbg 时间戳加序列号加随机数,碰撞概率足够低即可。真的遇上碰撞就重试。先查表没用,并发问题一样有。
    BlackBerry999
    BlackBerry999
    Feb 26, 2020
    15
    雪花算法生成 ID 靠谱一点
    vevlins
    vevlins
    Feb 26, 2020
    16
    自荐一下文章:分布式唯一 ID https://juejin.im/post/5e43b22251882549361e4be4,不过如果单表就是脱裤子放屁了,设置 unique + 随便一个随机算法成本最小。
    ps1aniuge
    ps1aniuge
    Feb 26, 2020
    17
    使用 [使用保存 mysql 时设置 unique]即可呀。设置 unique + 随便一个随机算法成本最小。
    楼上正解。
    zunceng
    zunceng
    Feb 26, 2020
    18
    snowflake + base58
    mostkia
    mostkia
    Feb 26, 2020
    19
    @xuanbg 没看到有盐嘛,单纯时间戳自然不太可靠的。加点佐料啊,哈哈
    xpdoh
    xpdoh
    Feb 28, 2020
    20
    base36,时间戳 x7//2020 年起约 120 年,间隔 50 毫秒,随机码 x9//约 10^15 种可能,共 16 位

    这是我的方案,又短又不会冲突,能用 120 年,就是这么自信
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4535 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 126ms · UTC 08:22 · PVG 16:22 · LAX 00:22 · JFK 03:22
    ♥ Do have faith in what you're doing.