golang 数据插入 redis列表与写入本地文件效率对比

第一步 查看本地的max open file

ulimit -a

第二步修改 open files 防止测试过程中出现 accept: too many open files in system; retrying in 5ms

临时修改 sudo sysctl -w kern.maxfiles=20480

写入文件代码

func  SaveDataToFile(data string){
    //设置时区
    loc, _ := time.LoadLocation(os.Getenv("TIMEZONE"))
    tm :=time.Now().In(loc)
    day :=tm.Format("20060102")
    filePath := os.Getenv("DATAFILEPATH")
    //判断文件夹是否存在不存在则建立
    _, err :=os.Stat(filePath)
    if err !=nil{
        os.MkdirAll(filePath,0777)
    }

    logFileName :=day+".log"
    //日志文件

    fileName := path.Join(filePath, logFileName)

    fout, err := os.OpenFile(fileName,os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModeAppend|os.ModePerm)

    if err != nil{
        log.PError(err.Error())
        return
    }
    defer  fout.Close()
    if err != nil {
        log.PError(err.Error())
        return
    }
    fout.WriteString(data+"\r\n")
}

写入

for i:=1;i<=10000;i++{
        timeM:=time.Now().UnixNano()
               str:=strconv.FormatInt(timeM,10)
               SaveDataToFile(str)
    }

写入redis列表

func(this *GinBaseController)SaveDataToRedis(data string){
    cacheKey:=os.Getenv("REDIS_PREFIX")
    conf.PREDIS.LPush(cacheKey,data)
}

测试结果

写入文件 写入redis列表|
结果 20000 20000
总耗时 6s 6s

你可能感兴趣的:(golang 数据插入 redis列表与写入本地文件效率对比)