> 文章列表 > id生成器

id生成器

id生成器

使用说明
⚠️ 所有使用id的业务场景,应该在数据库层设置合理的唯一索引
功能
自增id

  1. 基于 redis 自增

  2. redis 中的key为:[spring.application.name].idGenetate.[key]

  3. ⚠️ key 在不同的业务不应该重复使用,否则单号无法连续使用

    private final IdGenerateService idGenerateService;

    // 返回自增数字
    long incrId = idGenerateService.getIncrId(“A_KEY”);
    // 返回自增序列号,返回格式为key+自增id,其中数字部分最少6位
    String incrSeq = idGenerateService.getIncrCode(“B_KEY”, 6);

推荐使用场景

  1. 业务明确要求使用自增的场景,但是会有直接暴露业务量的风险

混淆id
在生成自增id的基础上,将自增结果进行混淆得到最后结果。
混淆算法:https://ht-it-2022.yuque.com/gkpo1f/hdkd6d/ggn1wh#vbBgu
● 此算法最大支持的id数量为:549755813888,5千亿,一般情况下够用
● ⚠️ key 在不同的业务不应该重复使用,否则单号无法连续使用
private final IdGenerateService idGenerateService;

// 返回混淆id数字
String confuseId = idGenerateService.getConfuseId("A_KEY", ConfuseLength.L_8);
// 返回混淆Seq, 返回格式为key+混淆id, 若超过指定长度支持的最大id,则会自动增加数字部分长度
String confuseCode = idGenerateService.getConfuseCode("A_KEY", ConfuseLength.L_8);

推荐使用场景

  1. 业务明确要求对自增id不敏感的场景
  2. 业务要求进行id长度限制

雪花id
private final IdGenerateService idGenerateService;

// 雪花id
long snowflakeId = idGenerateService.getSnowflakeId();
// 雪花Seq, 返回格式为key+雪花id
String snowflakeCode = idGenerateService.getSnowflakeCode("A_KEY");

推荐使用场景

  1. 研发内部使用的id、seq字段,无需暴露给业务,或业务对此id长度不敏感

字符串混淆id
private final IdGenerateService idGenerateService;

// 字符串ID(长度不能低于14)
String stringId = idGenerateService.getStringId(16);

推荐使用场景

  1. 礼品卡Code
  2. 其他业务可接受的,无序id

如何引入

com.hete.support
xx-id-starter

如何配置
配置文件的配置遵循xx-redis-starter的规定。

版本更新

1.0.0

  1. 初版,提供自增id、混淆id、雪花id的生成工具。