2011-12-16 3 views
0

저는 heroku에서 호스팅되는 레일즈 애플리케이션의 루비 분석에서 redis를 사용하고 있습니다. 어떻게 redis 타임 아웃을 처리해야하는지 생각하고 있습니다. Redis timeouts는 너무 자주 발생하지는 않지만 발생합니다. 여기에 내가 그들을 처리 할 어디 : 나는 궁금하네요SET 작업 중에 redis timeout이 발생하면 redis db의 데이터가 수정 될 수 있습니까?

begin 
    Timeout::timeout(5) { 
    # an operation that modifies data in redis db 
    } 
rescue Timeout::Error 
    # do something 
end 

: 레디 스의 timesout 및 실행이 구조 블록에 던져진다면, 그것은 레디 스의 DB에서 데이터가이 기간 동안 수정 된 가능성이있다? 수정되지 않았다는 보증이 있습니까 (이 경우 나중에 백그라운드 작업을 만들어이 작업을 다시 시도 할 수 있음)?

답변

0

Redis가 명령을 받았다고 가정하면 클라이언트가 ACK를 수신 할 수없는 경우 롤백 할 것으로 예상되지 않으며 소스 코드를 올바르게 이해하지 못할 경우이를 기대할 수 없습니다. 타임 아웃의 경우 redis를 실행하지 않으려면 트랜잭션을 사용해야합니다.