當前位置:成語大全網 - 書法字典 - Python字典保存到redis

Python字典保存到redis

MYSQL快速同步數據到Redis。

示例場景:存儲遊戲玩家的任務數據,遊戲服務器啟動時將mysql中的玩家數據同步到redis。

將MySQL中的數據導入Redis的哈希結構。當然,最直接的方法是遍歷MySQL數據,壹個壹個地寫入Redis。這個沒毛病,但是速度會很慢。如果能想辦法讓MySQL查詢輸出數據直接和Redis命令行的輸入數據協議壹致,就能節省很多消耗,縮短時間。

Mysql數據庫名為:GAME_DB,表結構為例:

創建表TABLE_MISSION(

playerId int(11)unsigned NOT NULL

missionList varchar(255)不為空,

主鍵(playerId)

);

Redis中的數據結構使用哈希表:

KEY key是mission,hash字段是mysql中對應的playerId,hash值是mysql中對應的missionList。數據如下:

[root@iZ23zcsdouzZ ~]# redis-cli

127.0.0.1:6379 >hget任務36598

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

快速同步方法:

創建新後綴。sql文件:mysql2redis_mission.sql

內容如下:

選擇串聯(

" *4\r\n ",

$ ',LENGTH(redis_cmd),' \r\n ',

redis_cmd,' \r\n ',

$ ',LENGTH(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,

傳教士

來自表格_任務

)作為t

創建shell腳本mysql2redis_mission.sh

內容:

MySQL GAME _ d b-skip-column-names-raw & lt;mission.sql | redis-cli - pipe

Linux系統終端可以執行shell腳本或者直接運行系統命令,從而將mysql數據庫GAME_DB的TABLE_MISSION數據同步到redis中的關鍵任務。mysql2redis_mission.sql文件將mysql數據的輸出數據格式與redis的輸入數據格式協議相匹配,大大縮短了同步時間。

經過測試,取出單個文件,修改數據格式,將相同的數據同步寫入redis需要5分鐘。使用上面的sql文件和shell命令,同步數據只需要大約3秒鐘。