Redis

Redis 数据持久化

2017-07-25  本文已影响0人  mashen

** 数据持久化 **

Redis 是基于内存的数据库,内存数据库有个严重的弊端:突然宕机或断电时,内存的数据不会保存。
为了解决这个问题,Redis 提供两种持久化方式:内存快照 和 日志追加

内存快照 ( RDB )

如何开启内存快照?
内存快照优先级低于日志追加 需关闭日志追加功能

配置文件 redis.conf

// 设置为no   ( 关闭日志追加 )
appendonly no
// 设置生成快照频率
save 900 1
save 300 10
save 60 10000

// 900秒内数据更改1次就进行内存快照操作
// 300秒内数据更改过10次
// 60秒内数据更改了10000次
// 当多个条件中成立一个 Redis都进行一次内存快照操作

如果有数据更改都还未满足其中任何一个条件则不会生成快照
也可通过 SAVEBGSAVE 命令手动生成快照
save 阻塞 Redis主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
bgsave 生成一个子进程,子进程负责生成快照,并在保存完成之后向主进程发送信号,所以不会阻塞主进程不影响主进程处理请求工作

内存快照每次都把内存数据完整地写入硬盘,而不是只写增量数据
所以如果数据量大,写入操作比较频繁,会严重影响性能

内存快照方式是将内存中的数据以快照方式写入二进制文件中
下次redis重新时自动读取二进制文件来恢复数据

配置文件 redis.conf

// 设置保存的二进制文件名称
dbfilename dump.rdb

// 设置保存的二进制文件存放目录
dir ../../../Cache/Redis

** 日志追加 ( AOF )**

通过二进制日志 日志中记录了所有增删改操作 通过write函数追加到文件尾部

配置文件 redis.conf

// 开启aof日志
appendonly yes

// 设置日志文件名 ( 存放路径和RDB相同 )
appendfilename "appendonly.aof"

// 设置同步的频率
appendfsync always | everysrc | no

// always   : 每次收到增加修改命令立刻强制写入硬盘
// everysrc : 每秒强制写入一次
// no       : 不强制写入 完全依赖操作系统  ( 大概30秒会强制写入一次 )
上一篇 下一篇

猜你喜欢

热点阅读