百萬級資料多表同步
阿新 • • 發佈:2018-12-14
只說思路!只說思路!只說思路!
應用場景:百萬級資料多表同步
實現思路:我用的是redis的list型別,我當初的應用場景是因為平臺開始設計時候並沒有打算把所有流水記錄放在一個表中,而是一種幣種,一個流水錶。
像這種
假如說我想對所有幣種進行一個查詢、條件搜尋、修改、分頁、該怎麼實現?觸發器? unin all ? 不現實的。
最後我實現的思路是用redis的佇列
進行一個非同步增改操作
將所有其他幣種寫進一個大表中
這樣就可以同時對所有幣種進行查詢、條件搜尋、修改、分頁等等操作
具體實現
當小表 進行 insert動作時
$data = array(
'field'=>$field,
);
$model->insert($data);
redis->lpush('insert',$data);
然後需要跑一個守護程序
守護程序實現
while(true)
{
$redis->lpop('insert');
}
需要實時的去監聽redis 裡面 insert這個key有沒有資料如果有 就 $data = redis->lpop('insert');
彈出來的資料就可以進行插入大表操作了
至於 update動作也是同理