2016-11-05 2 views
2

만료되면 redis 키를 한 위치에서 다른 위치로 원자화 방식으로 이동하는 방법이 있습니까? 재발급 만료 알림을 통보 받아 클라이언트에서이 작업을 수행하는 방법이 있지만 알림이 트리거 될 때 실행중인 클라이언트가 없으면 이벤트가 누락됩니다.만료시 키를 원자 적으로 이동

그러나 LUA 스크립트를 통해 서버에서 수행 할 수있는 방법이 있다면 이는 원자가 될 수 있으며 키는 만료되기 전 한 곳에서 만료되고 만료 후에는 다른 곳에 존재합니다.

답변

0

루아 스크립트는 키 공간 알림에 의해 트리거 될 수 없습니다. 클라이언트 쪽에서이 작업을 수행해야합니다.

0

키가 만료되면 만료 키 공간 알림이 시작되지 않습니다. 키가 명령에 액세스하고 만료 될 발견되면 (see Timing of expired events)

  • ... 예상대로 일이 보장 아니에요.
  • 백그라운드에서 만료 된 키를 찾는 백그라운드 시스템을 통해 점진적으로 접근하여 키가 아닌 키도 수집 할 수 있습니다.

IMHO, 나는 다른 접근법을 따라야한다고 생각합니다. 일부 외부 작업 스케줄러를 사용하고 만료 된 키를 몇 초 또는 몇 분만 이동하여 작업이 만료되기 전에 작업을 자동으로 시작합니다. ttl 명령을 사용하여 대상 키가 아직 살아 있는지 확인합니다.

필자에게 키 만료는 자동으로 메모리를 확보하는 좋은 방법이지만 만료 이벤트를 기반으로하는 동작을 생성하는 데는 사용하지 않아야합니다.

관련 문제