복붙노트

[REDIS] 레디 스와 실행 / 일정 지연?

REDIS

레디 스와 실행 / 일정 지연?

모든 트릭 레디 스에 따라 지연 작업 실행 (즉, 스케줄링)을 할까?

주어진 시간 (초 단위의) 동안 BLPOP을 지연 아마도 일부 영리한 방법? ..

해결법

  1. ==============================

    1.당신은 그들의 이름에 시간 구성 요소가 여러 목록의 반지와 함께 작업 할 수 있습니다. 시간 구성 요소로서 당신은 현재의 초 (0-59)를 취할 수 있습니다.

    당신은 그들의 이름에 시간 구성 요소가 여러 목록의 반지와 함께 작업 할 수 있습니다. 시간 구성 요소로서 당신은 현재의 초 (0-59)를 취할 수 있습니다.

    당신은 항상 현재 초 목록에 작업을 추가 할 수 있습니다. 내용이 초 주어진 수보다 오래된 것을, 당신은 단지 그것을 보장이 목록에 (낮은 타임 아웃)을 BLPOP를 수행 일자리를 얻으려면.

    여러 호스트에서 작업하는 경우에는 시계가 동기화 (NTP)에 있다는 것을 조심해야합니다.

  2. ==============================

    2.당신은 레디 스에 예약을하고 싶은 경우에, 나는 소트 세트 (은 Z *) 명령을 사용하는 것이 좋습니다 것입니다 :

    당신은 레디 스에 예약을하고 싶은 경우에, 나는 소트 세트 (은 Z *) 명령을 사용하는 것이 좋습니다 것입니다 :

    http://code.google.com/p/redis/wiki/SortedSets

    당신이 할 수있는 것은이 같은 것입니다 :

    ZADD jobs <unix timestamp of when you want the job to run> <job identifier>
    

    예컨대 :

    ZADD jobs 1291348355
    

    그런 다음, 모든 너무 자주 (최대 모든 초)을 실행해야 (또는 지금 실행해야) 예약 된 작업을 해낼 수 :

    ZRANGEBYSCORE jobs -inf, <current unix timestamp>
    

    붐, 당신은 실행하려면 작업을 얻었다. 물론, 소트 세트에서 수행 작업을 삭제해야합니다.

  3. ==============================

    3.에서 @ efalcao의 대답은 매우 좋은 일이지만, 귀하의 질문에 완벽하게 응용 프로그램의 요구에 맞게하지 않는 레디 스를 나타낼 수 있습니다. 응용 프로그램이 메시지 상자의 성격이있는 경우, 당신은 대담한 느끼는 경우 지연 메시지 나 akka를 제공하는 rabbitMQ 사용을 고려하시기 바랍니다

    에서 @ efalcao의 대답은 매우 좋은 일이지만, 귀하의 질문에 완벽하게 응용 프로그램의 요구에 맞게하지 않는 레디 스를 나타낼 수 있습니다. 응용 프로그램이 메시지 상자의 성격이있는 경우, 당신은 대담한 느끼는 경우 지연 메시지 나 akka를 제공하는 rabbitMQ 사용을 고려하시기 바랍니다

  4. from https://stackoverflow.com/questions/4138951/delayed-execution-scheduling-with-redis by cc-by-sa and MIT license