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

 

posted @   等风来~~  阅读(4458)  评论(0编辑  收藏  举报
编辑推荐:
· 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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示