java Redis生成唯一流水号

生成流水号可以有很多方式,此文章采用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 前缀+日期+四位数(自增的方式)

posted @   勇不停歇  阅读(145)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示