做项目的时候,经常会有自动生成业务编码的需求,比如插入数据的时候需要生成如下产品编号:P-(年份日期和三位序列号),比如P-20180727001
1. 实现思路
- 使用
业务编号+当前日期
获得redis的key值; - 使用redis的
incr
来原子性地获得其对应的自增数; - 避免redis的数据冗余,需要在第一次
incr
的时候使用expireAt
设置其数据当天24点过期。
这样即可在并发情况下获得不重复的相应编码。
2. 代码实现
public interface CodeGenerateService {
/**
* 根据编号类型生成相应的编号
*
* @param bizC