원래는 Redis ZSet의 score 값으로 System.Millis()를 사용하려고 했다.
하지만, 아주 짧은 시간 동안 한꺼번에 요청이 들어오는 상황에서는 밀리세컨드마저 동일한 경우가 발생할 수 있다.
user123 → 1712478912312
user456 → 1712478912312
따라서, 따로 Counter를 두어 해당 값을 score로 활용하도록 수정하였다.
public class QueueService {
private final RedisUtil redisUtil;
public EnterDTO.Result enter(EnterDTO.Command command) {
String counterKey = queueKey + ":counter";
Long score = redisUtil.increment(counterKey);
...
}
}