百万级数据多表同步

只说思路!只说思路!只说思路!

应用场景:百万级数据多表同步

实现思路:我用的是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动作也是同理