Java 按天自增生成自定义 ID
一天从1 开始自增到 9999,第二天又要重新从 1 开始生成 ,id 字符串会拼上年月
思路:既然 id 需要拼上年月,我们可以考虑用 redis 的自增指令来实现,年月当 key ,自然到了第二天 key 就变了,所以自增又重新开始了。
public String method(){
//时间位
DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("ddMMyy");
LocalDateTime dataTime = LocalDateTime.now();
String dateStr = DF_FMT_PREFIX.format(dataTime);
String keyPrefix = "PRD" + dateStr;
//顺序自增位
String orderNo = StringUtils.leftPad(String.valueOf(redisTemplate.opsForValue().increment(keyPrefix)), 5, "0");
return keyPrefix + orderNo;
}
缺点:会产生非常多的key,可以给 key 设定过期时间