java生成字符串加日期加自增的id_流水号的生成(日期+业务码+自增序列)

在项目开发中,为解决跨环境数据迁移导致的ID冲突问题,采用字符串作为主键生成唯一序列号。具体实现方式是结合日期、两位业务码和Redis实现10位自增序列。通过`TimeUtil.getToday()`获取日期,利用RedisDao的`incr`方法进行自增操作,最后拼接生成20位的序列号。这样既能保证唯一性,又方便根据日期和业务码进行统计分析。
摘要由CSDN通过智能技术生成

项目开发时,使用了两套数据库,开发环境和上线环境,数据库表中大多採用了自增主键,

比方:

id int unsigned primary key auto_increment,

但往往会碰到一些问题。比方:

开发环境中,使用爬虫抓取一些数据,建立索引。再把数据迁移到上线环境,会导致索引中的id和

上线环境数据库中id对不上,所以决定使用字符串作为主键。

那么问题来了,怎样生成唯一的序列号?

格式依照:yyyyMMdd+两位业务码+10位的自增序列。

比方20150101**99**0000000001。

思路:

获得日期非常easy;

业务码是调用服务传入的參数;

使用Redis来实现10位的自增序列的保存和自增,使用serial.number:{日期}的格式来保存某一天的自增序列的值;

主要代码例如以下:

public interface SerialNumberService {

/**

* 序列号自增序列

*/

String SERIAL_NUMBER = "serial.number:";

/**

* 依据两位业务码字符串,生成一个流水号,格式依照:

* yyyyMMdd{bizCode}{10位的自增序列号}

*

*@param bizCode

* 两位,00-99

*@return 20位的序列号

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值