redis数据持久化内存不足

数据数据达到内存一半的时候,提示快照失败了

Can't rewrite append only file in background: fork: Cannot allocate memory

因为redis 保存数据的时候是fork一个子进程保存的,所以内存消耗就变两倍了,我1G内存,只能保存500M作用的数据?
PS:我的redis只有几个键,每个键是列表,列表大概也是百万级别,或者会不会是每个键存储数据太多??

请问怎么搞,可以持久化更大的数据?

阅读 6.9k
6 个回答

不知道你存这么大List的作用是什么。
List的特点是取两端数据快,取中间数据慢,所以一般是做消息队列或者热数据分页,存太多数据并没有意义。

物理内存不够了会用虚拟内存fork子进程,理论上会比500MB大

当容量不能满足的时候,就应该考虑存储改变数据存储的方式或者格式。

redis的save命令是不fork的,bgsave命令才fork。但是save命令会使当前redis无法响应别的命令

redis纯内存db。内存占用超过50%的话,单机无法导出数据。欢迎进坑。

只能自己写一个redis了哈哈

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题