公司现在有个需求:
需要生成一个唯一的16位的订单号,订单号的规则是:一共是16位的数字,前面8位是日期比如2021年09月01就是20210901,后面8位是是自增。并且每天redis要清0,第二天又重0,1开始。
实现
@Component
public class OrderIdUtil {
@Autowired
private JedisPool jedisPool;
//初始值
private static final String ORDER_INIT = "0";
//订单缓存key
private static final String ORDER_KEY = "ORDER_KEY";
//订单ID前缀
private static final String ORDER_ID_PREFIX = "Z";
//时间格式化
private static final String DATE_FORMAT = "yyyyMMddHHmmss";
private static final int MAXLEN = 8;
/**
* 通过key获取自增并设定过期时间
* @param key
* @param date 过期时间
* @return
*/
public String generateId(String key,Date date) {
Jedis jedis = null;
try