视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Redis使用总结
2020-11-09 13:14:47 责编:小采
文档


数据持久化 快照 缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。 例子:要求如果每60秒有超过10

数据持久化

快照

缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。
例子:要求如果每60秒有超过1000条记录被更新,就自动将数据写到磁盘上,可以用下面的命令

SAVE 60 1000

这种策略称为快照。

工作原理

  • Redis forks.
  • 子进程开始将数据写到临时RDB文件中。
  • 当子进程完成写RDB文件,用新文件替换老文件。
  • 这种方式可以使Redis使用copy-on-write技术。

    Append-only文件

    快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。这对某些应用也许不是大问题,但对于要求高可靠性的应用来说,Redis就不是一个合适的选择。
    Append-only文件模式是另一种选择。
    你可以在配置文件中打开AOF模式:

    appendonly yes

    每次Redis接收到修改请求(SET),就会将数据写入AOF尾部。当重启Redis时,Redis会回放AOF中的内容。

    LOG重写

    AOF文件会随着写操作而变得越来越大。所以Redis支持一个有趣的特性:Redis可以在后台重建AOF,同时不会中断对前端的服务。当执行命令BGREWRITEAOF,Redis会在内存中写出拥有重建数据的最少的命令序列。如果你使用AOF,你应该经常地运行BGREWRITEAOF。

    AOF能做到多大程度的持久化?

    你可以配置Redis多长时间将数据fsync到磁盘上,有3种选择:

  • 每次有更新命令就执行fsync,这种方式非常慢,但非常安全。
  • 每秒钟执行一次fsync,这种方式足够快,但是有可能丢失一秒钟的数据。
  • 永远不执行fsync,有操作系统控制,这种方式更快,也更不安全。
  • 建议的策略(缺省)是每秒钟执行一次fsync.

    当AOF文件被破坏时该怎么办?

    有可能在写AOF时Redis崩溃,已破坏的文件不能被Reids使用。要解决这个问题参考下面的步骤:

  • 备份你的AOF文件
  • 用redis-check-aof修复你的原始文件
  • $ redis-check-aof --fix 
  • 使用diff -u 检查两个文件的差异(可选)
  • 使用修复后的文件重启Redis
  • 工作机制

    日志重写和快照模式使用了相同的copy-on-write机制。

  • Redis forks
  • 子进程开始写新的AOF文件到一个临时文件中
  • 父进程将新的更新命令保存在内存中(同时将这些更新写到老的AOF文件)
  • 当子进程完成写文件,父进程得到信号,将更新写到子进程创建的AOF文件
  • Redis自动将AOF文件改名,使用新的AOF文件
  • 原文出处:http://www.imsiren.com/archives/955

    下载本文
    显示全文
    专题