
我想问一下大家的 uid 是怎么生成的,uuid 有 32 位太长,目前的策略是时间戳+用户 ID+两位随机数
def make_uid(): a = str(int(time())) b = str(1).zfill(6) c = str(randint(10, 99)) return a + b + c a = make_uid() print(a) 但看了一下,有 18 位,感觉还是有些长,那么如何生成 10 位以内的不重复 uid 呢?
1 ZGLHHH Jun 9, 2016 via Android uid 不是 user id 吗?我选择 MySQL 自增 |
2 honmaple OP 额, uid 不是 url id 吗,假设不用自增 ID |
3 Ouyangan Jun 9, 2016 via Android 一般使用 uuid,你提出这个问题的出发点在哪里,短了对你有什么帮助 |
4 hxsf Jun 9, 2016 via Android 写过一个短网址服务,一下是我的策略 短网址说白了就是 k-v 。 默认生成 key 长度为 6 ,然后查重,重复就长度+1 再生成,再重复再+1 。直到不重复。 方法虽然 low ,但是可以确保不重复且始终有解。 |
5 misaka19000 Jun 9, 2016 via Android 搭个车问下类似于 V 站的这种 284656 是如何生成的?有没有知道的能解释下 |
6 YUX PRO uid 不是 unique ID 嘛 |
7 murmur Jun 9, 2016 @misaka19000 自增主键吧? |
8 SourceMan Jun 9, 2016 via iPhone 你们想把你们公司对外宣传几千万用户,然而只有 10 多万而已的事实通过自增主键暴露出来吗 |
10 Syc Jun 9, 2016 via Android DES[Base64[(MD5 加盐(SHA1(时间戳+用户 ID+随机数)))+随机数+随机数]] |
11 chineselittleboy Jun 9, 2016 via Android 不是不能用自增的嘛 |
12 eliteYang Jun 9, 2016 看下 snowflake 算法,比较适合你 |
13 murmur Jun 9, 2016 @chineselittleboy 为什么不能自增 老用户 id 号短那是身份象征 |
14 fy Jun 9, 2016 我自用的 ObjectID 生成 https://github.com/fy0/my-object-id |
15 fy Jun 9, 2016 不过长度这种东西就没办法了 |
25 ihuotui Jun 9, 2016 参考淘宝订单 id 规则。哈哈。 |
27 tabris17 Jun 9, 2016 自增 ID + Skip32 加密 |
28 zzzhan Jun 9, 2016 优雅简洁地实现短 ID http://www.jianshu.com/p/ee469e1e1f9d |
31 julyclyde Jun 9, 2016 我们公司早年是预先生成一堆,在一个单独保存 uid 的表里 用的时候取一个出来 |
33 ethego Jun 10, 2016 @jsq2627 http://inessential.com/2014/04/15/more_on_uuids_and_clustered_indexes 有一定的道理,但是不要盲目优化,确定 uuid 真的在当前业务下会引起足够的性能损失再做决定。 |
34 ryd994 Jun 10, 2016 谁说 uuid 比 20 位字符长的? uuid 是 128 位整数, 32 位 hex 字符 128 vs 32*8=256 mysql 官方文档: http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_uuid “ UUID() returns a value that conforms to UUID version 1 as described in RFC 4122. The value is a 128-bit number represented as a utf8 string of five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format ” |
35 9hills Jun 10, 2016 没有 32B ,如果使用常用字符表示的话, uuid 20B 足够了,毕竟只有 128bit |
37 breeswish Jun 10, 2016 直接 uuid 呀 |
38 practicer Jun 14, 2016 我们公司用于跟踪用户行为的"uid"是 32 位长。能不能直接用标准库里的 hashlib 呢? import hashlib m = hashlib.md5() m.update('Obama') m.hexdigest() |