数据库应用之--Redis+mysql实现大量数据的读写,以及高并发

一、开发背景

在项目开发过程中中遇到了以下三个需求:

  1. 多个用户同时上传数据;

  2. 数据库需要支持同时读写;

  3. 1分钟内存储上万条数据;

根据对Mysql的测试情况,遇到以下问题:

  1. 最先遇到压力的是服务器,在写入2500-3000条数据时,服务器崩溃了;

  2. 当数据库写入时,耗时太长,10000条数据,大概需要505.887s,相当于8分钟,如下:

  a. 表结构:

  

   b. 数据库Procedure:

DROP PROCEDURE IF EXISTS my_insert;
CREATE PROCEDURE my_insert()
BEGIN
   DECLARE n int DEFAULT 1;
        loopname:LOOP
            INSERT INTO car_pathinfo_driver_cpy(id, linkphone,cartype,carcolor,carnumber,drivername,pubtimes)VALUES(n+500,'18838325709','雪弗兰','','豫A190XS','siker','3');
            SET n=n+1;
        IF n=10000 THEN
            LEAVE loopname;
        END IF;
        END LOOP loopname;
END;
CALL my_insert();

  c. 运行结果如下:

  

  3. 不断的数据库写入导致数据库压力过大;

出现以上问题,是由于mysql是基于磁盘的IO,基于服务响应性能考虑,就需要给数据做缓存,所以决定使用Mysql+redis缓存的解决方案,将业务热数据写入Redis缓存,使得高频业务数据可以直接从内存读取,提高系统整体响应速度。

二、使用Redis+Mysql需要考虑的问题
  使用redis缓存+mysql数据库存储能解决:

  1. 数据读写的速度

  2. 服务器的压力问题

  同时,就需要考虑同步问题了,Redis和Mysql的同步问题

三、Redis+mysql同步解决方案

  1.

猜你喜欢

转载自www.cnblogs.com/anlia/p/11803686.html