2012-05-21 20 views
3

자주 사용하는 데이터를 mysql의 redis 서버에 넣으려고합니다. 그래서 읽기 서버처럼 redis, 나는 mysql에서 redis로 데이터를 이동해야합니다. 아무도 좋은 접근을 권할 수 있습니까? 내가 어떤 주제를 읽고는, 다음은 레디 스에 넣어 MySQL의 로그 분석을 2 레디 스 읽을 타이밍 응용 프로그램 데이터 이동을 통해 적절한 데이터를 기록하기 위해 MySQL의 트리거를 통해 어떤 생각을 공유mysql에서 redis로 데이터를 옮기는 방법

일이있다.

진드기 : 내 애플리케이션 데이터에 redis에 저장된 데이터는 실시간 처리가 필요하지 않지만 대기 시간은 짧습니다.

+0

왜 데이터를 이동해야합니까? Redis를 대신 캐싱에 사용할 수 있습니까? –

+0

당신이 말한 것은 옳습니다. 나는 집계 된 mysql 데이터를 원하고 자주 읽으려고 redis에 넣었고, maybee seperate는 더 유연합니다. – mandatory

+0

또한, 영구적 인 redis 데이터 계획이 없습니다. redis 서버가 다운 된 경우, mysql-> redis subsystem backup redis를 사용할 수 있습니다. – mandatory

답변

0

나는 MySQL의 UDF 플러그인 (https://github.com/Ideonella-sakaiensis/lib_mysqludf_redis)를 사용하면 레디 스 MySQL에서 데이터를 동기화하는 데 도움이 될 수 있습니다 생각합니다.

예 :

테이블에 대한 트리거를 설정 한 다음 MY_TABLEID

을하여 값을 얻을 수 있습니다

DELIMITER $$ 
CREATE TRIGGER `after_insert_my_table` 
AFTER INSERT ON `my_table` FOR EACH ROW 
BEGIN 
    DO `redis`('redis://@127.0.0.1/0/', 'SET', new.`id`, new.`text`); 
END $$ 
DELIMITER ; 

UDF MySQL이 레디 스 명령을 호출

DELIMITER $$ 
CREATE TABLE `my_table` (
    id varchar(16) PRIMARY KEY, 
    text varchar(32) 
); 
mysql> SELECT `redis`('redis://@127.0.0.1/0/', 'GET', <my_table id>)\G 
*************************** 1. row *************************** 
`redis`('redis://@127.0.0.1/0/', 'GET', <my_table id>): { 
     "out": <my_table text> 
} 
관련 문제