인프런 커뮤니티 질문&답변

donkey님의 프로필 이미지

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

Redisson lock() vs tryLock()

24.08.24 13:16 작성

·

21

0

반드시 실행 되어야할 서비스 로직에

lock(3,TimeUnit.SECONDS) 이럭식으로 사용하려고 하는데

tryLock() 대신 써도 될지 궁금합니다.

코드 찾아보면, 다들 tryLock() 쓰시던데,

시스템적으로 저렇게 계속 lock획득 대기 상태로 만들어 놓으면, 안되는건지 궁금합니다.

  • lock 대기 상태일때도 커넥션이 잡혀있나요?

  • lock 대기상태가 많아지면 서버가 다운될 수 있나요?

 

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

2024. 08. 29. 23:01

donkey 님 안녕하세요!
말씀하신 lock(3,TimeUnit.SECONDS) 이 어떤건지 좀만 자세하게 말씀해주실 수 있으실까요?

0

인프런 AI 인턴님의 프로필 이미지

2024. 08. 26. 13:21

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과는 다소 벗어난 정보이지만, Spring과 관련된 Redis 데이터 처리에 대한 정보를 참고하실 수 있도록 제공해드리겠습니다. Redis를 사용하여 데이터 처리를 할 때, Spring에서는 RedisTemplate이나 StringRedisTemplate를 통해 Redis 연동 기능을 손쉽게 사용할 수 있습니다. 예를 들어, Redis와의 연결 구성을 위해서는 다음과 같은 방법으로 속성을 설정할 수 있습니다:

spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.database=0
spring.data.redis.username=user
spring.data.redis.password=secret

또는 YAML 형식으로도 설정할 수 있습니다:

spring:
  data:
    redis:
      host: "localhost"
      port: 6379
      database: 0
      username: "user"
      password: "secret"

이러한 설정을 통해 Spring 애플리케이션에서 Redis 서버에 연결하고 데이터 처리 작업을 수행할 수 있습니다.

서버의 과부하나 다운과 같은 시스템적 이슈는 여러 요소에 의해 발생할 수 있으며, lock을 오랜 시간 동안 사용하거나 대기 상태를 지속하는 것이 서버에 부담을 줄 수 있습니다. lock을 사용할 때는 필요한 최소 시간 동안만 lock을 유지하고, 가능하면 tryLock을 사용하여 lock을 얻을 수 없는 경우 즉시 대응할 수 있도록 하는 것이 좋습니다.

더 자세한 Spring과 Redis의 사용법에 대해서는 다음 URL을 참고해 주시기 바랍니다: Spring Boot Reference Documentation

질문하신 lock과 관련된 깊은 내용에 대해서는 이 정보가 직접적인 답변이 되지 못할 수 있음을 양해부탁드립니다. Redisson의 lock과 tryLock 기능의 차이점, 그리고 시스템적 측면에서의 영향에 대해선 해당 기술의 공식 문서나 커뮤니티에서 더 심도 있는 정보를 얻으실 수 있습니다.

donkey님의 프로필 이미지

작성한 질문수

질문하기