Redis启动正常,一段时间后报错,连不上redis(redis持久化出错)
Redis持久化报错
1、redis在最终目标上移动临时数据库文件时出错
错误: #Background saving error * 1 changes in 900 seconds. Saving... * Background saving started by pid 14568 # Error moving temp DB file temp-14568.rdb on the final destination authorized_keys (in server root dir /root/.ssh): Operation not permitted
分析原因:是因为redis的持久化机制RDB先将内存中的数据集写入临时文件(temp-pid.rdb),写成功后再替换之前的文件(dump.rdb),而现在写入临时文件出错,数据保存不了,导致程序崩溃
解决方案:
修改redis配置文件:vim /usr/local/redis/etc/6379.conf
将dir ./ 修改为redis配置文件所在目录:/usr/local/redis/etc/
最后重启redis
2、Redis持久化失败报错
错误:
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1'
to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. [7679] 15 Jan 00:27:35.287 *
DB loaded from disk: 19.629 seconds
解决方案:在Linux系统设置一个参数(vm.overcommit_memory)即可解决。
编辑 sysctl.conf 配置文件:vim /etc/sysctl.conf
vm.overcommit_memory = 1
使配置文件生效:sysctl -p
最后重启redis
3、RDB和AOF持久化
以上俩个错误如果没有得到彻底解决,过一段时间还是报错或者重启数据丢失等,可以将RDB和AOF持久化都开启。
redis有两种持久化方式:一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化)
一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)
RDB是默认开启的,AOF需要修改配置文件来开启: vim redis.conf
修改完,重启redis
原文链接:https://www.cnblogs.com/cfzy/p/14911396.html
作者:等风来~~
本博客所有文章仅用于学习、研究和交流目的,欢迎转载。
如果觉得文章写得不错,或者帮助到您了,请点个赞。
如果文章有写的不足的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。
分类:
报错解决
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构