当前位置: 首页 > 工具软件 > javaredis > 使用案例 >

java Redis生成唯一流水号

乐正烨熠
2023-12-01

生成流水号可以有很多方式,此文章采用redis 键自增的方式哦

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author wuzhenyong
 * ClassName:SerialUtil.java
 * date:2022-04-26 8:21
 * Description: 流水号工具类
 */
@Component
public class SerialUtil {
    /**
     * redis流水号key
     */
    private final static String REDIS_KEY = "serial";
    /**
     * 流水号抬头
     */
    private final static String STR = "LSH";
    /**
     * 流水号格式
     */
    private final static String FORMAT_CODE = "0000";

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 生成流水号
     * 实际业务需要检查数据库是否存在
     * @return {@link String}
     */
    public String nextValue() {

        LocalDateTime now = LocalDateTime.now();
        // 格式在这里定义
        String pattern = "yyyyMMdd";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        String date = formatter.format(now);
        DecimalFormat dft = new DecimalFormat(FORMAT_CODE);
        Long count = redisTemplate.opsForValue().increment(REDIS_KEY, 1);
        // 格式化为四位流水号
        String code = dft.format(count);
        // 最终结果
        String result = STR + date + code;
        return result;
    }

}

调用生成流水号的方法
例子:当前时间2022-05-20
流水号为:LSH202205200001 前缀+日期+四位数(自增的方式)

 类似资料: