복붙노트

[REDIS] MySQL의에 동기화 레디 스 데이터에 최선의 전략은 무엇입니까?

REDIS

MySQL의에 동기화 레디 스 데이터에 최선의 전략은 무엇입니까?

내 솔루션입니다 :

이 솔루션 OK인가? 그리고이 일을 할 수있는 최선의 전략은 무엇인가?

해결법

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

    1.당신은 해킹 아무것도 할 필요가 없습니다)

    당신은 해킹 아무것도 할 필요가 없습니다)

    나는 전적으로 당신이 MySQL을 데이터가 필요 왜 안입니다. 내가 알았다면, 어쩌면 더 적합 답이있을 것입니다. 어떤 경우에는, 일반적인 답변으로 당신은 레디 스 KEYSPACE 알림을 사용할 수 있습니다

    당신은 키가 삭제 통지마다 또는 설정하거나 제거 해시 값을 얻을 것입니다, 그래서 당신은 당신의 키에 명령 HSET, HMSET, HDEL 및 DEL를 구독 할 수 있습니다.

    당신이 어떤 통지를 놓칠 경우 불일치가있을 것입니다 있습니다. 그래서 그냥 모든 키를 통해 이동하고 업데이트해야하는 경우 MySQL을 확인하기 위해 SCAN 명령을 사용할 수있는 동안 한번.

    또 다른 전략은 두 개의 분리 된 구조를 유지 할 수있다. 하나는 값으로 해시 것, 다른 하나는 모든 값의 ZSET이 업데이트의 타임 스탬프으로 분류 될 것이다. 현재까지 두 구조를 유지하는 가장 좋은 방법은 해시와 원자 적 ZSET에서 작동하는 것 두 개 또는 세 루아 스크립트 (삽입 / 업데이트 및 삭제)를 작성하는 것입니다.

    그럼 그냥 주기적으로 (독점적 사람들을위한 두 번째 ZSET을 사용하지 않으려면이 삭제 키를 포함 할 것)하고, 갱신 된 모든 키를 얻을, 마지막 동기화 작업보다 높은 타임 스탬프 요소에 대한 ZSET을 조회 할 수 있습니다 MySQL의 열쇠와 동기화하여 모든 요소를 ​​검색 할 수 있습니다.

    당신을 위해 작동합니다 희망!

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

    2.당신은 레디 스 복제 프로토콜을 구현할 수 있습니다. 하지만 귀하의 요구에 대한 GitHub의 프로젝트가있다.

    당신은 레디 스 복제 프로토콜을 구현할 수 있습니다. 하지만 귀하의 요구에 대한 GitHub의 프로젝트가있다.

    안정 버전은 2.5.0이다

    <dependency>
        <groupId>com.moilioncircle</groupId>
        <artifactId>redis-replicator</artifactId>
        <version>2.5.0</version>
    </dependency>
    
  3. ==============================

    3.당신은 레디 스 값을 업데이트 할 때 큐의 값을 소비하는 등 Redis.Then의 목록으로, 다른 '큐'의 값을 넣어 MySQL을 업데이트 할 수 있습니다.

    당신은 레디 스 값을 업데이트 할 때 큐의 값을 소비하는 등 Redis.Then의 목록으로, 다른 '큐'의 값을 넣어 MySQL을 업데이트 할 수 있습니다.

    레디 스 데이터는 배치 평면에 MySQL의 모든 데이터를 스케줄러를 사용하여, 너무 많이없는 경우.

  4. from https://stackoverflow.com/questions/23080557/whats-the-best-strategy-to-sync-redis-data-to-mysql by cc-by-sa and MIT license