百万级数据多表同步

面对百万级数据多表同步的问题,采用Redis的List类型作为解决方案。通过在Redis中创建队列,当在小表中进行insert或update操作时,将数据推入队列。然后,使用守护进程持续监听队列,一旦有数据,就从队列中取出并同步到大表,以实现全币种的查询、条件搜索、修改和分页等操作。
摘要由CSDN通过智能技术生成

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值