当前位置: 首页 > news >正文

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的生成工具。
http://www.lryc.cn/news/60371.html

相关文章:

  • 为什么许多人吐槽C++11,那些语法值得我们学习呢?
  • 千耘农机导航的“星地一体”能力究竟是什么?
  • (数字图像处理MATLAB+Python)第四章图像正交变换-第四、五节:Radon变换和小波变换
  • 舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)
  • 牛顿法、梯度下降法与拟牛顿法
  • 带你浅谈下Quartz的简单使用
  • C++ cout格式化输出
  • 查询练习:复制表的数据作为条件查询
  • Thymeleaf select回显并选中多个
  • 【Go 基础】变量
  • 国网B接口语音对讲和广播技术探究及与GB28181差别
  • 非计算机专业如何转行成为程序员?我用亲身经历教你用这三种方法
  • 2023年最新网络安全渗透工程师面试题汇总!不看亏大了!
  • 红黑树(C++实现)
  • leetcode尊享面试 100 题 - 1427. 字符串的左右移
  • 进来看看!跨境电商要这样选品才能做出爆款
  • 什么是深度学习?
  • 追梦之旅【数据结构篇】——看看小白试如何利用C语言“痛”撕堆排序
  • python版pytorch模型转openvino及调用
  • TensorFlow 机器学习秘籍第二版:9~11
  • 【苏州数字力量】面经 base上海
  • FVM链的Themis Pro(0x,f4) 5日IDO超百万美元,或让Filecoin逆风翻盘
  • webserve简介
  • 分析型数据库:MPP 数据库的概念、技术架构与未来发展方向
  • 微服务高级篇学习【4】之多级缓存
  • 知乎版ChatGPT「知海图AI」加入国产大模型乱斗,称效果与GPT-4持平
  • 邮件发送配置
  • 【Open CASCADE -生成MFC和QT事例方式】
  • python 笔记:PyTrack(将GPS数据和OpenStreetMap数据进行整合)【官网例子解读】
  • 苦中作乐 ---竞赛刷题31-40(15-20)