Java 의 Collection + 동시성 기능을 Redis 기반으로 분산 환경에서 제공하는 객체 컬렉션
RBucket<String> bucket = redisson.getBucket("seat:123");
bucket.set("RESERVERD", 10, TimeUnit.SECONDS);
String status = bucket.get();
RList<String> rList = redisson.getList("seat:waitlist");
rList.add("user1");
rList.add("user2");
List<String> list = rList.readAll();
RSet<String> rSet = redisson.getSet("reserved-users");
rSet.add("user1");
rSet.add("user2");
RScoredSortedSet<String> rankedSet = redisson.getScoredSortedSet("rank");
rankedSet.add(100.0, "userA");
rankedSet.add(80.0, "userB");
rankedSet.first(); // 점수 낮은 순
rankedSet.last(); // 점수 높은 순
RMap<String, String> rMap = redisson.getMap("match:2025-05-10");
rMap.put("seatA1", "RESERVED");
rMap.put("seatA2", "AVAILABLE");
RQueue<String> rQueue = redisson.getQueue("notify-queue");
rQueue.add("send-email");
rQueue.add("send-sms");
rQueue.poll(); // 맨 앞 제거 및 반환
RDeque<String> rDeque = redisson.getDeque("ticket-deque");
rDeque.addFirst("user1");
rDeque.addLast("user2");
RLock lock = redisson.getLock("seat:lock:123");
lock.lock();
try {
// 좌석 예약 처리
} finally {
lock.unlock();
}
RSemaphore semaphore = redisson.getSemaphore("semaphore:vip-seat");
semaphore.trySetPermits(5); // 최초 permit 개수 설정
if (semaphore.tryAcquire()) {
try {
// 동시 예약 가능 작업
} finally {
semaphore.release();
}
}
RCountDownLatch latch = redisson.getCountDownLatch("latch:event-ready");
latch.trySetCount(3);
latch.await(); // 3이 될 때까지 대기
// 다른 곳에서 작업 끝나면 countDown 호출
RCountDownLatch latchWorker = redisson.getCountDownLatch("latch:event-ready");
latchWorker.countDown();