Home > Database > Mysql Tutorial > Redis 使用总结

Redis 使用总结

WBOY
Release: 2016-06-07 16:34:02
Original
918 people have browsed it

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

数据持久化

快照

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

SAVE 60 1000
Copy after login

这种策略称为快照。

工作原理

  • Redis forks.
  • 子进程开始将数据写到临时RDB文件中。
  • 当子进程完成写RDB文件,用新文件替换老文件。

这种方式可以使Redis使用copy-on-write技术。

Append-only文件

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

appendonly yes
Copy after login

每次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 <filename></filename>
Copy after login
  • 使用diff -u 检查两个文件的差异(可选)
  • 使用修复后的文件重启Redis

工作机制

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

  • Redis forks
  • 子进程开始写新的AOF文件到一个临时文件中
  • 父进程将新的更新命令保存在内存中(同时将这些更新写到老的AOF文件)
  • 当子进程完成写文件,父进程得到信号,将更新写到子进程创建的AOF文件
  • Redis自动将AOF文件改名,使用新的AOF文件
原文出处:http://www.imsiren.com/archives/955
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template