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 设定过期时间