복붙노트

[REDIS] 어떻게 레디 스는 캐시 된 데이터 또는 DB에서 신선한 데이터를 반환 할 경우 알아가는 것

REDIS

어떻게 레디 스는 캐시 된 데이터 또는 DB에서 신선한 데이터를 반환 할 경우 알아가는 것

말은, 내가 가져 오기 수천 기록 DB에서 일부 긴 실행 작업을 사용하여 레디 스를 사용하여 캐싱을 해요. 다음날 누군가가 DB에 몇 가지 기록을 변경했습니다.

레디 스를 다시 캐시 된 데이터를 반환하거나하는 것을 알고 얼마나 다음 번에 다시 방문해야 모든 DB에 기록 수천?

어떻게 동기화를 달성?

해결법

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

    1.레디 스는 DB의 데이터가 업데이트되었는지 여부를 모르고있다.

    레디 스는 DB의 데이터가 업데이트되었는지 여부를 모르고있다.

    다음과 같이 일반적으로 우리는 데이터를 캐시 레디 스를 사용합니다 :

    레디 스 업데이트를 최신으로 데이터를 유지하기 위해 그래서, 당신은 짧은 만료 시간을 설정할 수 있습니다. 그러나 귀하의 DB는 요청을 많이 제공한다.

    당신은 크게 DB에 요청을 감소하려는 경우, 당신은 큰 만료 시간을 설정할 수 있습니다. 그래서, 대부분의 시간은, 레디 스 가능한 staled 데이터 요청을 제공 할 수 있습니다.

    당신은 트레이드 오프 성능과 staled 데이터 사이에 대해 신중하게 고려해야합니다.

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

    2.당신은 레디 스이 DB에서 데이터를 밀어 데이터베이스에 진실 상주의 소스 때문에, 당신은 항상 적어도 당신이 동기화 데이터를 다른 프로세스를 생성, DB에서 레디 스에 업데이트해야합니다.

    당신은 레디 스이 DB에서 데이터를 밀어 데이터베이스에 진실 상주의 소스 때문에, 당신은 항상 적어도 당신이 동기화 데이터를 다른 프로세스를 생성, DB에서 레디 스에 업데이트해야합니다.

    나의 제안은 당신이 당신의 데이터베이스에 갱신 / 생성 / 삭제 작업을 확인할 때마다 당신은 레디 스에 당기는 동기화 프로세스를 사용하여 다음 레디 스에 DB에서 첫 번째 전체 업데이트를 실행하는 것입니다.

    난 당신이 레디 스에 저장 데이터베이스 레코드에 사용되는 레디 스 구조 모르지만 나는 그것이 동기화 작업을 즉시 할 수 있도록 아마 당신의 테이블 인덱스에 의해 색인 해시, 수있을 것 같아요 : 레코드가 데이터베이스에 생성 된 경우 사용자가 설정 HSET, 삭제 HDEL 경우 등등.

    당신은 레디 스에 DB에서 첫 번째 전체 동기화를 생략하고 바로 깨끗한 레디 스 및 동기화 프로세스를 시작할 수 있습니다.

    당신이 어떤 이유로 위를 할 수없는 경우에 당신은 지속적으로 데이터베이스에서 데이터를 읽고 그들이 어떻게 든 업데이트하거나 둘 중 일부에 존재하지 않는 경우에 다른 경우 레디 스에서 데이터 저장소로의 비교 syncher 데몬을 만들 수 있습니다 양측은 삭제하거나 레디 스에서 항목을 만들 수 있습니다.

  3. from https://stackoverflow.com/questions/49299958/how-would-redis-get-to-know-if-it-has-to-return-cached-data-or-fresh-data-from-d by cc-by-sa and MIT license