복붙노트

[REDIS] 이동할 수있는 빠른 방법은 MySQL로 데이터를 레디 스

REDIS

이동할 수있는 빠른 방법은 MySQL로 데이터를 레디 스

우리는 큰 쇼핑 및 제품 거래 시스템을 가지고있다. 우리는 그래서 우리는 레디 스를 사용하고 우리가 우리의 시스템에서 레디 스를 통합 시작할 계획 몇 R & D 후 MySQL과 제비 문제에 직면했다. 이 이전에 직접 타격 데이터베이스에 이어 이제 우리는 레디 스 시스템을 이동 한

난 단지 내가 시간 간격으로 MySQL의 데이터 레디 스 데이터를 이동 크론를 작성한 레디 스 시스템에서 데이터를 저장하고 있지 않다. 이것은 내가 문제를 직면하고있는 주요 포인트입니다. 포인트 우는 내가 솔루션을 찾고 있어요

해결법

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

    1.MySQL로 레디 스에서 빅 데이터를 덤프하기 위해 그들의 다른 방법이 있습니까?

    MySQL로 레디 스에서 빅 데이터를 덤프하기 위해 그들의 다른 방법이 있습니까?

    레디 스 비 차단하고 일관된 방식으로 데이터의 덤프를 생성 할 수있는 가능성 (bgsave 사용)을 갖는다.

    https://github.com/sripathikrishnan/redis-rdb-tools

    당신은 레디 스 파이썬에서 파일 (RDB)를 덤프 구문 분석 Sripathi Krishnan의 잘 알려진 패키지를 사용하고 MySQL의 인스턴스를 오프라인으로 채울 수 있습니다. 또는 당신은 당신의 MySQL을 채우는 원하는 언어로 JSON 형식으로 레디 스 덤프 및 쓰기 스크립트를 변환 할 수 있습니다.

    당신이 MySQL을로 레디 스 인스턴스의 전체 데이터를 복사 할 경우이 솔루션은 흥미 롭다.

    합니까 레디 스 내가 큐 시스템과 같은 크론을 방지하기 위해 사용할 수있는 트리거 시스템을 가지고?

    레디 스에는 트리거 개념이 없지만, 레디 스는 MySQL로 복사해야 할 때마다 뭔가를 큐에 아무것도 방지는 이벤트를 게시 할 수 있습니다. 예를 들어, 대신 :

    # Add an item to a user shopping cart
    RPUSH user:<id>:cart <item>
    

    당신은 실행할 수 있습니다 :

    # Add an item to a user shopping cart
    MULTI
    RPUSH user:<id>:cart <item>
    RPUSH cart_to_mysql <id>:<item>
    EXEC
    

    다중 / EXEC 블록은 원자와 일치한다. 그럼 당신은 조금 데몬 (BLPOP 명령을 사용하여) cart_to_mysql 큐의 항목에서 대기 작성해야합니다. 각 대기열 항목에 대해 데몬은 레디 스에서 관련 데이터를 가져, 그리고 MySQL의 인스턴스를 채울 수있다.

    레디 스는 그래서 MySQL 데이터베이스에 직접 데이터를 저장하는 것이 가능 파일에 우리의 데이터를 저장하지?

    나는 확실히 나는 여기에 질문을 이해하고 있지 않다. 위의 솔루션을 사용한다면, 레디 스 업데이트와 MySQL 업데이트 사이의 지연 시간이 매우 제한됩니다. 레디 스 실패 그렇다면, 당신은 단지 (cron 작업 기반으로하는 솔루션에 반하는) 맨 마지막 작업을 잃어 버리게된다. 그래도 데이터의 전파에 100 % 일관성을 가지고 물론 수 없습니다.

  2. from https://stackoverflow.com/questions/12009297/the-faster-method-to-move-redis-data-to-mysql by cc-by-sa and MIT license