從MySQL到Redis提升資料遷移的效率
場景是從MySQL中將資料匯入到Redis的Hash結構中。當然,最直接的做法就是遍歷MySQL資料,一條一條寫入到Redis中。這樣可能沒什麼錯,但是速度會非常慢。而如果能夠使MySQL的查詢輸出資料直接能夠與Redis命令列的輸入資料協議相吻合,可能就省事多了。
根據測試800w的資料遷移,時間從90分鐘縮短到2分鐘。
具體案例如下:
根據測試800w的資料遷移,時間從90分鐘縮短到2分鐘。
具體案例如下:
MySQL資料表結構:
CREATE TABLE events_all_time (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
action varchar(255) NOT NULL,
count int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY uniq_action (action)
);
Redis儲存結構:
HSET events_all_time [action] [count]
下面是重點,能過下面SQL語句將MySQL輸出直接變更成redis-cli可接收的格式:
-- events_to_redis.sql
SELECT CONCAT(
"*4
",
`$`, LENGTH(redis_cmd), `
`,
redis_cmd, `
`,
`$`, LENGTH(redis_key), `
`,
redis_key, `
`,
`$`, LENGTH(hkey), `
`,
hkey, `
`,
`$`, LENGTH(hval), `
`,
hval, `
`
)
FROM (
SELECT
`HSET` as redis_cmd,
`events_all_time` AS redis_key,
action AS hkey,
count AS hval
FROM events_all_time
) AS t
然後用管道符重定向輸出即可:
mysql stats_db --skip-column-names --raw < events_to_redis.sql | redis-cli --pipe
相關文章
- Django應用資料庫從MySQL到PostgreSql的遷移Django資料庫MySql
- 【Redis】 redis資料遷移Redis
- 從 SQL Server 到 MySQL (一):異構資料庫遷移ServerMySql資料庫
- sqlldr 完成mysql到oracle的資料遷移MySqlOracle
- redis資料遷移Redis
- Django資料從sqlite遷移資料到MySQLDjangoSQLiteMySql
- redis資料庫遷移Redis資料庫
- oracle 資料遷移案例 從 8.1.7.4到9.2.0.8Oracle
- 資料從Oracle向Mysql資料遷移例項OracleMySql
- 從Serv-U到vsftp的資料遷移FTP
- 【PyTHON】redis資料遷移PythonRedis
- 1.0 ORACLE到MYSQL資料遷移方式選型OracleMySql
- 藉助ogg完成oracle到mysql的資料遷移OracleMySql
- Mysql資料遷移方法MySql
- 淺談 Redis 與 MySQL 的耦合性以及利用管道完成 MySQL 到 Redis 的高效遷移RedisMySql
- 從MySQL到ORACLE程式遷移的注意事項(轉)MySqlOracle
- Redis資料遷移同步工具(redis-shake)Redis
- redis叢集 資料遷移方案Redis
- 遷移資料庫到ASM資料庫ASM
- 【資料遷移】RMAN遷移資料庫到ASM(二)切換資料檔案到ASM資料庫ASM
- 遷移MySQL 5.7資料庫MySql資料庫
- MySQL 資料遷移Oracle工作MySqlOracle
- mysql資料庫遷移 mysqldumpMySql資料庫
- mysqldump從mysql遷移資料到OceanBaseMySql
- 【資料遷移】RMAN遷移資料庫到ASM(三)遷移onlinelog等到ASM資料庫ASM
- 把資料從MySQL遷到Oracle的幾點注意事項MySqlOracle
- redis 單機和cluster資料遷移Redis
- 遷移資料庫到SQLonLinuxDocker資料庫SQLLinuxDocker
- oracle 遷移資料庫到asmOracle資料庫ASM
- 【資料遷移】RMAN遷移資料庫到ASM(一)建立ASM磁碟組資料庫ASM
- 【Redis】redis遷移資料到redis-clusterRedis
- 運維效率之資料遷移自動化運維
- 用rman從檔案系統遷移資料庫到asm資料庫ASM
- [Sqlite] 資料遷移備份--從低版本到高版本SQLite
- MySQL資料遷移那些事兒MySql
- linux mysql資料庫遷移LinuxMySql資料庫
- 從雲資料遷移服務看MySQL大表抽取模式MySql模式
- 遷移資料庫檔案到ASM資料庫ASM