반죽 숙주

MYSQL 데이터를 Redis 로 빠르게 동기화합니다.

예제 장면: 게임 서버가 시작될 때 MySQL 의 플레이어 데이터를 redis 와 동기화하는 게이머의 작업 데이터를 저장합니다.

MySQL 의 데이터를 Redis 의 해시 구조로 가져옵니다. 물론 가장 직접적인 방법은 MySQL 데이터를 하나씩 Redis 에 기록하는 것입니다. 이것은 문제없지만 속도가 느려질 것이다. MySQL 쿼리 출력 데이터를 Redis 명령줄의 입력 데이터 프로토콜과 직접 일치시키는 방법을 강구할 수 있다면 많은 소비를 절약하고 시간을 단축할 수 있습니다.

Mysql 데이터베이스 이름은 GAME_DB 이고 테이블 구조는 다음과 같습니다.

테이블 TABLE_MISSION (

Playeridint (11) unsignednot null

MissionList varchar(255) 가 비어 있지 않습니다.

기본 키 (playerId)

);

Redis 의 데이터 구조는 해시 테이블을 사용합니다.

키 키는 mission, 해시 필드는 MySQL 의 해당 playerId, 해시 값은 MySQL 의 해당 missionList 입니다. 데이터는 다음과 같습니다.

[root@iZ23zcsdouzZ ~]# redis-cli

127.0.0.1:6379 > hget 작업 36598

"{\"10001\ ":{\" status \ ":1,\" progreer "10003 \": {\ "status \":1,\ "progress\":0}, \

빠른 동기화 방법:

새 꼬리말을 작성합니다. Sql 파일: mysql2redis_mission.sql

내용은 다음과 같습니다.

연결 선택 (

"*4\r\n",

$', 길이 (redis _ cmd),' \r\n',

Redis_cmd,' \r\n' ,

$', 길이 (redis _ key),' \r\n',

Redis_key,' \r\n' ,

$', 길이 (HKEY),' \r\n',

Hkey,' \r\n',

$', 길이 (hval),' \r\n',

Hval,' \r'

) 을 참조하십시오

에서 (

고르다

HSET 는 redis_cmd 로 사용됩니다.

대표단은 redis_key 로서

PlayerId 는 HKEY 입니다.

선교사

From table _ task

) 를 t 로 사용합니다

셸 스크립트 mysql2redis_mission.sh 를 생성합니다

콘텐츠:

Mysql game _ db-skip-column-names-raw < Mission.sql | redis-cli-pipe

Linux 시스템 터미널은 셸 스크립트를 실행하거나 시스템 명령을 직접 실행하여 MySQL 데이터베이스 GAME_DB 의 TABLE_MISSION 데이터를 redis 의 미션 크리티컬 데이터와 동기화할 수 있습니다. Mysql2redis_mission.sql 파일은 MySQL 데이터의 출력 데이터 형식을 redis 의 입력 데이터 형식 프로토콜과 일치시켜 동기화 시간을 크게 단축합니다.

테스트 후 개별 파일을 체크 아웃하고 데이터 형식을 수정하며 동일한 데이터를 redis 에 동기화하는 데 5 분이 소요됩니다. 위의 SQL 파일과 셸 명령을 사용하면 데이터를 동기화하는 데 약 3 초 밖에 걸리지 않습니다.

上篇: 바이오 노트북 가격은 얼마인가요? 下篇: QQ사진 접근권한 정지시 원본사진 보는 방법
관련 내용