1
kayseen OP 我是单机使用, 如果两个用户在同一毫秒申请这个编码,因为依赖时间的关系是一定会重复吗?
|
2
aec4d 2020-04-02 17:33:06 +08:00 via iPhone
都懒得看 CSDN 就知道怎么回事儿。理解原理才行,是不可能重复的,除非是多线程,多进程或者分布式环境,这种情况并发高一定会有重复。可以搞一个中心化发号器杜绝重复
|
5
banxi1988 2020-04-02 17:40:06 +08:00 2
推荐一个视频 ,对 snowflake 算法有说明. Python 实现的.
https://www.bilibili.com/video/BV1TJ411D7Cw/ |
6
lhx2008 2020-04-02 17:59:13 +08:00 via Android
这玩意肯定是在 pip 或者 github 上面找个多人用的库
|
7
gclm 2020-04-02 19:03:37 +08:00 via Android
时钟回拨。确实会重复,可以其他算法生成 ID
|
8
superrichman 2020-04-02 19:13:28 +08:00 via iPhone
可以考虑用 redis 的 incr 来生成 id
|
9
keshawnvan 2020-04-02 19:21:13 +08:00
你可以参考一下我的实现,有解决时钟回拨
https://www.yuque.com/kaixiang-jinoo/gtspek/mft5gx |
10
kayseen OP @keshawnvan 刚看了下你写的几篇文章真太好了,可惜看不懂 JAVA😔。。。
|
11
kayseen OP @superrichman
谢谢提供思路,之前有考虑过,觉得雪花算法不依赖数据库挺好的哈哈 |
14
kayseen OP @lhx2008
唉,说起来你可能不信,我在 github 上没有找到 python 版本用的人多的 |
16
keshawnvan 2020-04-03 10:52:13 +08:00
@kayseen 看懂原理自己实现以下就可以了
|
17
TransAM 2020-04-03 14:03:11 +08:00 via Android
不加锁也可以,每个线程维护自己的计数器,机器 id 后面插入 tid 。
|
18
cz5424 2020-04-04 19:40:48 +08:00
上线至今没遇到重复的
|
20
rogwan 2020-04-08 07:42:36 +08:00 via iPhone
可以考虑下 short uuid
|
21
lolizeppelin 2020-04-08 14:56:43 +08:00
真服了你们了 这么简单一个算法 自己随便折腾下就知道了
这玩意你完全可以根据自己需要改造一下 |