资料参考来源拉钩Java高薪训练营
一、UUID
UUID是通用唯一识别码,产生重复的UUID情况非常低。
java中生成一个UUID很简单,使用java.util包提供的方法:
java.util.UUID.randomUUID()
二、独立数据库的自增ID
假如A表分表为A1和A2表,那么可以在数据库中新建一张表global_id_generator,这张表设置id自增,往A1或A2中新增数据时,先向global_id_generator表新增一条数据,mysql中我们可以通过select last_insert_id()获取刚刚新增的这条数据的id,这样就可以拿到一个全局唯一id了。
那么其实这种⽅式现在基本不⽤,因为过于麻烦
三、SnowFlake 雪花算法
雪花算法其实就是生成一个long型的id,java中long型占8个字节64bit:
有些公司针对雪花算法封装了一些框架,⽐如滴滴的tinyid(基于数据库实现)、百度的uidgenerator(基于SnowFlake)和美团的leaf(基于数据库和SnowFlake)等。
四、Redis的Incr命令获取全局唯⼀ID
Redis Incr 命令将 key 中储存的数字值增⼀。如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执⾏ INCR 操作。
推荐使用这个方法。