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

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

作者: 顶尖少爷 | 来源:发表于2021-04-26 11:48 被阅读0次

    第一步 查看本地的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列表与写入本地文件效率对比

        本文链接:https://www.haomeiwen.com/subject/mqpurltx.html