Golang Go语言中有什么比较好的将内存文件dump到外存的方法?

Golang Go语言中有什么比较好的将内存文件dump到外存的方法?
场景是需要在内存处理好多好多数据,包括一些数据集之间的关联运算。但是数据量一大的时候内存容易爆,想将部分处理结果先 dump 到外存,必要的时候再加载回来这种方式。请问各位有什么比较高效又省地方的方法呢?谢谢大家

6 回复

自己写个存文件的方法

更多关于Golang Go语言中有什么比较好的将内存文件dump到外存的方法?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


gob …

加 swap 不好么?
不行就得考虑持久化,而持久化想做好太难了,还是老实用数据库吧

内存多到爆了 还不用 redis 么或者 DB

内存对象的序列化方案
一般用 json,需要高效就用 proto

在Golang中,将内存文件dump到外存(即磁盘)的方法有多种,以下是一些常用的方法:

  1. 使用标准库io.Copy

    • 可以将内存中的文件数据(通常是一个io.Reader接口的实现)直接复制到磁盘文件(一个io.Writer接口的实现)中。
    • 这种方法简单高效,适用于大多数场景。
  2. 使用os和bufio包

    • 通过os.Create创建目标文件,然后使用bufio.NewWriter对文件进行缓冲写操作。
    • 可以逐块读取内存中的数据,并写入到磁盘文件中,适用于大文件处理。
  3. 使用ioutil包(注意ioutil在Go 1.16及以后版本中逐渐被弃用)

    • ioutil.WriteFile可以一次性将内存中的数据写入到磁盘文件中,但这种方法不适用于大文件,容易内存溢出。
  4. 自定义dump逻辑

    • 根据具体需求,可以编写自定义的dump逻辑,如压缩、加密等处理后再写入磁盘。

在实际应用中,应根据文件大小、性能需求以及是否需要额外的处理(如压缩、加密)等因素来选择合适的方法。对于大多数常规场景,推荐使用标准库的io.Copy方法,它简单且高效。同时,注意在写入完成后关闭文件句柄,以释放系统资源。

回到顶部