Redis 數據庫 數據同步到 MySQL 有啥方案

redis作主數據庫, 數據分析和查詢在mysql中,須要把數據從redis 同步到 mysqlmysql

有什麼解決方案? gem 或者思路? 謝謝。 須要考慮數據的一致性,其實本身寫git

應該是能夠的,有沒有現成的類庫什麼的?github

    

共收到 8 條回覆web

96

ihlayy · #1 · 3 年前 redis

來點思路也行額。。 有作過的嗎sql

2880

luikore · #2 · 3 年前 數據庫

建議直接在 redis 中作分析和查詢, 或者在往redis存數據的全部地方都加一個往mysql存數據的方法... redis 和 mysql 數據的範式是徹底不同的, 轉換就是一個大問題, 恐怕很難找到現成的類庫, 找到也不必定符合要求.ruby

redis 也有很多給查詢和分析使用的方法, 還能夠執行 server side lua: http://redis.io/commands/eval, 基本能解決缺乏 average()sum() 等函數的問題ide

96

ihlayy · #3 · 3 年前 函數

#2樓 @luikore 
謝謝啊,如今看了下,有幾種思路,可是感受都不是很優雅且有必定的複雜度,拋磚引玉
1) 在全部redis 增,刪,改數據的地方,處理完以後,放到隊列,由MYSQL處理隊列中的東西
缺點就是,代碼估計很難看,並且這部分屬於系統而外的東西。不爽

2) redis-dump,redis-rdb之類的工具導出數據並同步
https://github.com/nrk/redis-rdb
導出數據有兩種模式
a. rdb 文件 ( redis 作的快照 ,這個文件看起來是會從新整理的,因此所sync的時候可能不方便,不便於判斷哪些數據是刪除了的,並且須要從新把全部數據檢查一遍,這個恐怕很差)
b. aof 文件 ( 利用這種,能夠有一個offset標記同步到哪兒了,若是失敗了,或者下次sync的時候,從offset開始解析命令 )
問題在於,怎麼對應redis的命令 和 mysql 的db 結構, 若是mysql 的db 結構和redis 不一樣的時候,
好比有中間表,也須要想辦法處理

3) 直接讀redis db , 在redis 對象中須要加上create_at ,update_at,須要額外的記錄deleted的對象。 sync的時候記下updated_at,
下次sync找到udpated_at 以後的數據進行處理 。

96

bhuztez · #4 · 3 年前 

redis作主數據庫,這是啥應用 ...

96

ihlayy · #5 · 3 年前 

#4樓 @bhuztez 
手機端遊戲類的,前期可能先這樣弄吧,寫入比較大。
估計數據量大的時候,會考慮持久化一部分到硬盤。

mysql 主要是怕處理全文索引,一些複雜查詢redis不太好作

2880

luikore · #6 · 3 年前 

#5樓 @ihlayy redis作複雜查詢很容易啊...全文索引就和數據庫無關吧...

96

ihlayy · #7 · 3 年前 

#6樓 @luikore

建索引得佔內存啊,若是是從description之類的字段裏索引,不必定划算的意思。

2466

rasefon · #8 · 1 年前 

別用mysql了,多買幾個ups,搞個100g內存就好了哈哈。

相關文章
相關標籤/搜索