redis生成されたグローバル一意ID
@Autowired
private RedisTemplate redisTemplate;
/**
* ID
* @param key
* @param expireTime
* @return
*/
public long generate(String key,Date expireTime) {
RedisAtomicLong counter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
//
Long expire = counter.getExpire();
if(expire==-1){
counter.expireAt(expireTime);
}
return counter.incrementAndGet();
}
public String generateMessagerId() {
//idの生成は、その年のミリ秒+8ビット(00000000から桁数が0未満)LocalDateTime now=LocalDateTime.now();String IdPrefix = getIdPrefix(now);//String Id = IdPrefix+String.format("%1$08d", generate(IdPrefix,getExpireAtTime(now))); return Id;
}
public static String getIdPrefix(LocalDateTime now){
//
return now.format(DateTimeFormatter.ofPattern("yyMMddHHss"));
}
public Date getExpireAtTime(LocalDateTime now){
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = now.plusSeconds(20);
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
return date;
}