来源:
https://www.cnblogs.com/shigj/p/11215262.html
public class TestService { @Resource RedisTemplate<String, Object> redisTemplate; public String getId() { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); Date date=new Date(); String formatDate=sdf.format(date); String key="key"+formatDate; Long incr = getIncr(key, getCurrent2TodayEndMillisTime()); if(incr==0) { incr = getIncr(key, getCurrent2TodayEndMillisTime());//从001开始 } DecimalFormat df=new DecimalFormat("000");//三位序列号 return formatDate+df.format(incr); } public Long getIncr(String key, long liveTime) { RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory()); Long increment = entityIdCounter.getAndIncrement(); if ((null == increment || increment.longValue() == 0) && liveTime > 0) {//初始设置过期时间 entityIdCounter.expire(liveTime, TimeUnit.MILLISECONDS);//单位毫秒 } return increment; } //现在到今天结束的毫秒数 public Long getCurrent2TodayEndMillisTime() { Calendar todayEnd = Calendar.getInstance(); // Calendar.HOUR 12小时制 // HOUR_OF_DAY 24小时制 todayEnd.set(Calendar.HOUR_OF_DAY, 23); todayEnd.set(Calendar.MINUTE, 59); todayEnd.set(Calendar.SECOND, 59); todayEnd.set(Calendar.MILLISECOND, 999); return todayEnd.getTimeInMillis()-new Date().getTime(); } }
标签:自增,set,redis,Long,key,序列,new,todayEnd,Calendar From: https://www.cnblogs.com/chyf1990/p/17047266.html