记录一次重启服务器 Redis 数据丢失问题

前奏:

今日在写订单 延时队列 时(下单30分钟后未支付,自动关闭订单),将队列使用 Supervisor 监听,放在测试服务器上一直不能监听,重启 supervisor 显示 no such process, 找了好久没解决,然后重启服务刚才的队列可以监听队列了,这是心中一跃,返回刚才的问题,发现 supervisor 放错位置了。

这时突然发现整个网站是用到 redis 的地方数据全部没有了。

解决方法:

①vim /etc/sysctl.config 编辑sysctl.config

②独占一行,添加一行  vm.overcommit_memory = 1

③wq保存修改的配置,然后sysctl -p 使配置生效

这样linux服务器即使重启了,之前的数据依然存在!

本作品采用《CC 协议》,转载必须注明作者和本文链接
不要轻易放弃。学习成长的路上,我们长路漫漫,只因学无止境 Don't give up easily. On the way of learning and growing up, we have a long way to go, just because there is no end to learning.
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

Redis数据跟 /etc/sysctl.config这个文件有关系吗?

6年前 评论

@lovecn 数据跟 sysctl.config 文件没有关系,而是跟里面的 overcommit_memory 参数有关系 https://www.jianshu.com/p/fc5a64af5401

当然你也可以开启 redis 持久化,持久化有两种分别是 RDB 和 AOF。

Redis 默认设置会开启 RDB 持久化。
有另一种持久化 AOF,两种持久化可以同时开启。
即使开启了持久化并不意味着你的数据在重启后一定和重启前一致。因为 Redis 并不可能每写一次内存便写一次硬盘(如果是这样,性能会很差),根据你的配置文件里面的规则,RDB 可以被触发写硬盘,还没有来得及写入(触发写入前)的那一部分会丢失。

更进一步了解请查看Redis官方文档:https://redis.io/topics/persistence

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!