主动策略:

主动策略:

1:自动增长,AUTO INCREMENT

​ 1-10000 10001-20000 20001-30000

​ 缺点:分表分库时会比较麻烦。比如,下一张表id需要再上一个最后一个id的基础上加一

2:UUID

​ 每次生成随机唯一的值

​ 缺点:排序不方便

3:redis生成id

​ 可以使用Redis集群来获取更高的吞吐量。假如一个集群中有5台Redis。可以初始化每台Redis的值分别是1,2,3,4,5,然后步长都是5。各个Redis生成的ID为:

A:1,6,11,16,21

B:2,7,12,17,22

C:3,8,13,18,23

D:4,9,14,19,24

E:5,10,15,20,25

​ 缺点:1)如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。

​ 2)需要编码和配置的工作量比较大。

4:mp自带策略(mp默认策略)(Twitter的snowflake算法

生成一个19位的值

snowflake(雪花)是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。具体实现的代码可以参看https://github.com/twitter/snowflake。

在主键id上方加:

@TableId(type = IdType.AUTO)
private Long id;

注:那个点后面:

AUTO:自动增长

ID_WORKER:mp自带策略,生成19位值,数字类型使用这种策略,比如long(说的是主键的)

ID_WORKER_STR: mp自带策略,生成19位值,字符串类型使用这种策略,比如String(说的是主键的)

INPUT:设置ID值

NONE:输入

UUID:随机唯一值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值