前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式ID生成

分布式ID生成

作者头像
ha_lydms
发布2023-08-10 08:23:23
1310
发布2023-08-10 08:23:23
举报
文章被收录于专栏:学习内容

一、UUID

1、简介

优点:

  • 简单,代码⽅便。
  • ⽣成ID性能⾮常好,基本不会有性能问题。
  • 全球唯⼀,在遇⻅数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应对。

缺点:

  • 没有排序,⽆法保证趋势递增。
  • UUID往往是使⽤字符串存储,查询的效率⽐较低。
  • 存储空间⽐较⼤,如果是海量数据库,就需要考虑存储量的问题。
  • 传输数据量⼤。
  • 不可读。

2、代码实现

代码语言:javascript
复制
import java.util.UUID;
public class UUIDUtils {
    public static String getUUID() {
//        2c294ec8-9585-4b06-954e-7380979e7ff1
        String uuid = UUID.randomUUID().toString();
        return uuid;
    }
}

三、Redis

1、简介

当使⽤数据库来⽣成ID性能不够要求的时候,我们可以尝试使⽤Redis来⽣成ID。这主要依赖于Redis是单线程的,

所以也可以⽤⽣成全局唯⼀的ID。可以⽤Redis的原⼦操作 INCR和INCRBY来实现。

优点:

  • 不依赖于数据库,灵活⽅便,且性能优于数据库。
  • 数字ID天然排序,对分⻚或者需要排序的结果很有帮助。

缺点:

  • 如果系统中没有Redis,还需要引⼊新的组件,增加系统复杂度。
  • 需要编码和配置的⼯作量⽐较⼤。
  • ⽹络传输造成性能下降。

2、代码实现

pom.xml依赖

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Java代码:

代码语言:javascript
复制
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;

public class RedisIdUtils {
    private static final String redisIdKey = "redisKey";

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public Long getRedisID() {
//        默认每次步进1,可配置
        Long redisKey01 = stringRedisTemplate.opsForValue().increment(redisIdKey);
        Long redisKey = stringRedisTemplate.opsForValue().increment(redisIdKey, 1);
        return redisKey;
    }
}

三、雪花算法snowflake

详见写的另一篇文章。

雪花算法(分布式自增长ID

代码语言:javascript
复制
https://blog.csdn.net/lydms/article/details/124696135
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、UUID
    • 1、简介
      • 2、代码实现
      • 三、Redis
        • 1、简介
          • 2、代码实现
          • 三、雪花算法snowflake
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档