
java使用redis实现按年流水号并发自增
java使用redis实现按年流水号并发自增1、业务需求实现流水号 年份+000001,新的一年再次重新从0递增,例如 2021000001,20220000012、可以承受并发,直接上代码public synchronized String autoApplyId() throws Exception{int currentYear = Calendar.getInstance().get(Ca
·
java使用redis实现按年流水号并发自增
另一种方法:java使用AtomicInteger实现按年流水号并发自增
1、业务需求实现流水号 编号+年份+000001,新的一年再次重新从0递增,例如 G2021000001,G2022000001
2、可以承受并发,直接上代码
public synchronized String autoApplyId() throws Exception{
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
//redis的key
String applyIdKey = "apply_id_number";
//redis的value模板,例2022000001
String applyIdNumber = String.format(currentYear + "%06d", 1);
//如果存在key则在原有value序号上自增+1,如到新的一年则更新value值为 新年份+000001
if (stringRedisTemplate.hasKey(applyIdKey)) {
String yearNumber = stringRedisTemplate.opsForValue().get(applyIdKey).substring(0, 4);
int dataYear = Integer.parseInt(yearNumber);
if (dataYear != currentYear)
stringRedisTemplate.opsForValue().set(applyIdKey, applyIdNumber);
else
stringRedisTemplate.opsForValue().increment(applyIdKey,1);
} else {
//如果不存在key则直接设置value为 当前年份+000001
stringRedisTemplate.opsForValue().set(applyIdKey, applyIdNumber);
}
String yearNumber = stringRedisTemplate.opsForValue().get(applyIdKey);
String applyId = "A" + yearNumber;
return applyId;
}
更多推荐
活动日历
查看更多
直播时间 2025-02-26 16:00:00


直播时间 2025-01-08 16:30:00


直播时间 2024-12-11 16:30:00


直播时间 2024-11-27 16:30:00


直播时间 2024-11-21 16:30:00


目录
所有评论(0)