redis生成自增流水号每天自动从头开始

    public String createSerialNumber() {
        //时间戳 后面拼接流水号 如果需要  可以加上时分秒
        String datetime = new SimpleDateFormat("yyyyMMdd").format(new Date());
        //这里是 Redis key的前缀,如: sys:日期
        String key = MessageFormat.format("{0}:{1}", "sys", datetime);
        //查询 key 是否存在, 不存在返回 1 ,存在的话则自增加1
        Long autoID = stringRedisTemplate.opsForValue().increment(key, 1);
        // 设置key过期时间, 保证每天的流水号从1开始
        if (autoID == 1) {
            stringRedisTemplate.expire(key, 86400, TimeUnit.SECONDS);
        }
        //这里是 6 位id,如果位数不够可以自行修改 ,下面的意思是 得到上面 key 的 值,位数为6 ,不够的话在左边补 0 ,比如  110 会变成  000110
        String value = StringUtils.leftPad(String.valueOf(autoID), 5, "0");
        //然后把 时间戳和优化后的 ID 拼接  格式 年月日6后五位流水号 例如 20210305600001
        String code = MessageFormat.format("{0}{1}{2}", datetime,"6", value);
        return code;
    }

版权声明:本文为qq_37883866原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。