转自:https://my.oschina.net/freegeek/blog/324410

1、redis持久化,来自官方说明

如何选择使用哪种持久化方式?

一般来说, 如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。

如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。

有很多用户都只使用 AOF 持久化, 但我们并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 还可以避免之前提到的 AOF 程序的 bug 。

Note: 因为以上提到的种种原因, 未来我们可能会将 AOF 和 RDB 整合成单个持久化模型。 (这是一个长期计划。)

接下来的几个小节将介绍 RDB 和 AOF 的更多细节。

快照

在默认情况下, Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中。你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。你也可以通过调用 SAVE或者 BGSAVE , 手动让 Redis 进行数据集保存操作。

比如说, 以下设置会让 Redis 在满足“ 60 秒内有至少有 1000 个键被改动”这一条件时, 自动保存一次数据集:

save 60 1000

这种持久化方式被称为快照 snapshotting.

工作方式

当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:

  • Redis 调用forks. 同时拥有父进程和子进程。

  • 子进程将数据集写入到一个临时 RDB 文件中。

  • 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。

这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益。

只追加操作的文件(Append-only file,AOF)

快照功能并不是非常耐久(durable): 如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。

从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方式: AOF 持久化。

你可以在配置文件中打开AOF方式:

appendonly yes

从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文件的末尾。这样的话, 当 Redis 重新启时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。

2、问题MISCONF Redis is configured to save RDB snapshots

127.0.0.1:6379> set k1 "nob"

(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

出现如上错误是因为磁盘无法写入,缘由:应该是之前强制停止redis快照导致

我的解囧,重启机器没问题了,哈哈哈,就是因为几次强制停止造成的

有人的解囧如下

config set stop-writes-on-bgsave-error no

如果是内存问题应该如下办法,具体查看日志,

请在/etc/sysctl.conf 添加一项 'vm.overcommit_memory = 1' ,然后重启(或者运行命令'sysctl vm.overcommit_memory=1' )使其生效。

[参考文献]

1、http://www.redis.cn/topics/persistence.html  官方文档对于持久化的说明

2、http://www.linuxidc.com/Linux/2012-07/66079.htm  从Redis的数据丢失说起

3、http://www.redicecn.com/html/Linux/20131125/468.html  MISCONF Redis is configured to save RDB 内存问题引起

4、http://blog.csdn.net/chenggong2dm/article/details/17325241   磁盘满了也报错 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk

最新文章

  1. centos7 解决ftp和apache运行目录权限冲突问题
  2. FLUSH TABLE WITH READ LOCK详解
  3. 安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具
  4. android6.0锁屏界面接收新通知处理流程
  5. 第12章 在.NET中操作XML
  6. vertex compression所遇到的问题
  7. js后退一直停留在当前页面或者禁止后退
  8. 学习笔记:APP切图那点事儿–详细介绍android和ios平台
  9. 分布式文件系统FastDFS设计原理
  10. Rebuild my Ubuntu 分类: ubuntu shell 2014-11-08 18:23 193人阅读 评论(0) 收藏
  11. Asp.net中用户自定义控件 ascx的使用
  12. 使用面向 iOS 的本机插件扩展
  13. MVC进阶之路:依赖注入(Di)和Ninject
  14. Android 动画深入分析
  15. Reflux中文教程——概览
  16. RX系列四 | RxAndroid | 加载图片 | 提交表单
  17. tar解压到指定目录
  18. iview表单验证下拉框不通过问题
  19. Java 实现缓存,一个线程存,一个线程取
  20. Python基础4 迭代器、装饰器、软件开发规范

热门文章

  1. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---14
  2. LeetCode OJ-- Maximum Depth of Binary Tree
  3. ios textfield如何设置,只能输入1.0-9.9内的数字,并实现时时监测效果
  4. ConstraintLayout 约束布局
  5. bzoj 1571: [Usaco2009 Open]滑雪课
  6. MySQL Workbench关键字转成小写设置
  7. 聊聊、Zookeeper 客户端 Curator
  8. NetBeans菜单栏字体太小了
  9. VS2010 MFC中 静态编译设置方法
  10. mybatis配置mapperLocations多个路径