最近一个项目需要每分钟获取一次大量设备的心跳(包括设备的信号,电量等内容)
现在每次获取到心跳都去更新mysql,个人感觉设备数量再上去,数据库的压力会太大
1.想获取的内容存入redis,那什么时候redis的数据同步回mysql会比较好(设备一天24小时在线的),还是说开个进程不断的将redis的内容update回mysql?。
2.看了一些redis和mysql共同协作的文章,都说先从redis查找数据,没有再去mysql查找,想请教下,这个判断从redis还是mysql拿数据有中间件来判断吗?。 不然还是说每个读取数据库的部分都要 if($redis) elseif($mysql) ?
不是每一个读取数据库,要找出需要优化的操作出来,就像上面的大量设备的信号,电量等内容这个更新操作,可以先放到redis的list 队列(就是设备发来的数据不直接更新数据库,而是放到redis),另外开个进程去消化数据,如果数据库本身压力就打,可以定时批量的执行上面说到的消化进程,如凌晨再批量入库而不是每时每刻入库。