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

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

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