首页 javaWEB 不重复的id生成策略

不重复的id生成策略

最近新公司新搞项目 需要定一个不重复的id生成策略。 以前mysql 自增策略第一个就被PASS了 查阅了相关资料。 大…

最近新公司新搞项目

需要定一个不重复的id生成策略。

以前mysql 自增策略第一个就被PASS了

查阅了相关资料。

大概有的策略如下

第一个就是UUID

这个大家都比较熟悉了

结合机器的网卡、当地时间、一个随记数来生成UUID

不重复的id生成策略

优点:本地生成,性能较好

缺点:长度过长,而且还是无序的

第二个就是基于数据库生成

单独搞一台数据库,

设置自动增长,用于记录增长值

然后所有id生成都去请求它

优点:简单,高效

缺点:需要单独部署,大并发下性能比较低

第三个 Twitter的snowflake算法

这个没有去深入了解

只是大概知道

snowflake是Twitter开源的分布式ID生成算法,

结果是一个long型的ID。

其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0

优点:生成的id是long,递增

缺点:每台机器上的时间不一样,会产生不了递增的情况

第四个 zookeeper生成id

第五个 MongoDB的ObjectId生成id

这两个了解比较少没有深入

直接pass过

第六个 redis生成id

redis现在基本的项目都会用到

很好用的缓存

Redis是单线程的,所以也可以用生成全局唯一的ID。

优点:数字ID天然排序,对分页或者需要排序的结果很有帮助,高并发也行,可以设置Redis集群来生成

缺点:网上有说引入redis配置啥的麻烦,代码量多之类的,我感觉springboot,咔咔咔,2,3下就搞定了

所以后面就选用redis生成id


还有没有其他策略比较好用,

可以留言下,

大家一起进步

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

nodejs 整理记录

nodejs 整理记录

下载包 https://blog.csdn.net/m0_59878114/article/details/120274...
websocket测试html

websocket测试html

<!DOCTYPE html> <html> <head> <meta cha...
bigdemical两个数比较大小

bigdemical两个数比较大小

/*int result = bigdemical1.compareTo(bigdemical2) result = -...
Beetl2.7 中文文档

Beetl2.7 中文文档

Beetl目前版本是2.7.23,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等...
纯CSS实现多个便签在一行展示,拖动滚动

纯CSS实现多个便签在一行展示,拖动滚动

div <h2>请注意需要在移动端预览,PC端拖拽无效果</h2> <div class=...
返回顶部