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

一、开发背景在项目开发过程中中遇到了以下三个需求:  1. 多个用户同时上传数据;  2. 数据库需要支持同时读写;  3. 1分钟内存储上万条数据;根据对Mysql的测试情况,遇到以下问题:  1. 最先遇到压力的是服务器,在写入2500-3000条数据时,服务器崩溃了;  2. 当数据库写入时,耗时太长,10000条数据,大概需要505.887s,相当于8...
摘要由CSDN通过智能技术生成

一、开发背景

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

  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.写Redis->redis写mysql,读Mysql。

  以下是一个Redis+mysql同步的示例,该示例测试了写入100000条数据的效率,先向Redis写入100000条数据,再将数据读出,写入Mysql。

    批量写入缓解了服务器的压力。

stdafx.h

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <assert.h>
#include <vector>
#include "hiredis.h
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值