Redis持久化

Redis数据类型和常用配置https://blog.csdn.net/projectNo/article/details/119733596
Redis发布订阅和事务https://blog.csdn.net/projectNo/article/details/119818581
Redis持久化https://blog.csdn.net/projectNo/article/details/119861861
Redis主从复制和哨兵模式https://blog.csdn.net/projectNo/article/details/119861873
Redis集群https://blog.csdn.net/projectNo/article/details/119893021

Redis持久化

持久化就是把数据备份到硬盘或者远程位置上,Redis是内存型数据库,为了防止重启、宕机或者机器故障等,需要提前将内存的数据备份持久化,Redis提供了两种持久化的方式:

  • RDB(Redis DataBase)
  • AOF (Append Of File)

RDB持久化

1、简介

RDB持久化:将某个时间点的所有数据保存到磁盘上,Redis启动时会读取该文件重构数据。Redis默认使用RDB持久化。

2、备份操作

Redis会单独创建Fork一个子进程来进行持久化,先把数据写入到一个临时文件中,待持久化全部完成再用这个临时文件替换上次持久化好的文件。整个过程主进程不进行任何IO操作,以确保主进程性能。RDB要比AOF方式更加高效,但是RDB缺点是最后一次持久化后的数据可能会丢失。

3、Fork

Fork的作用是复制一个与当前进程完全相同的子进程,子进程去做持久化。

4、什么时候进行RDB备份:

  • Bgsave命令:客户端发送此命令Redis会调用子进程fork创建一个进程来创建一个快照。
  • Save命令:客户端还可以发送Save命令来创建快照,接收到Save命令Redis在创建完毕之前不会再响应其他命令,这个命令不常用。
  • Save选项:参照下节配置介绍。
  • Showdown命令:客户端发送关闭命令,Redis阻塞所有客户端,不接受所有命令,然后执行完save命令关闭服务器。
  • 一个Redis链接到另一个Redis:连接时会向主Redis发送Sync命令来开始一次复制操作的时候,如果主服务器没有执行Bgsave或者主服务器并非刚执行完BgSave操作,那么主服务器就会进行一次Bgsave操作。

5、RDB持久化常用配置:

策略名默认值说明
dbfilenamedbfilename dump.rdbRDB持久化存放数据的文件名
dir./存放路径
savesave 900 1
save 300 10
save 60 10000
以第一个为例:900秒(15分钟)至少有1条数据改变就会备份
stop-writes-on-bgsave-errorstop-writes-on-bgsave-error yesRedis无法写入磁盘的话,直接关掉Redis的写操作
rdbcompressionrdbcompression yes开启后Redis会采用LZF算法进行压缩
rdbchecksumrdbchecksum yes使用CRC64算法来进行数据校验,会增加约10%的性能消耗

AOF持久化

1、简介

AOF持久化的是以日志的形式记录每个写操作(增量保存),将所有执行的写指令记录下来,读取指令不记录,只许追加不许改写文件。Redis启动时会读取该文件重构数据,会读取文件中之前写的指令全部执行一次来完成恢复工作。与RDB快照持久化的方式相比,AOF实时性更好。Redis默认没有开启AOF的持久化,可通过appendonly yes参数开启。如果同时开启两种方式持久化,Redis会优先选择AOF还原数据。

2、备份过程

(1)客户端请求写的命令会被append追加到AOF的缓存区。

(2)AOF的缓存区根据持久化策略(always、everysec和no)将操作Sync同步到磁盘上的AOF文件中。

(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件Rewrite重写,压缩文件容量。

(4)Redis重启后会重新加载AOF文件中的命令恢复数据。

3、AOF持久化常用配置:

策略名默认值说明
appendonlyappendonly noAOF持久化开关
appendfilenameappendfilename “appendonly.aof”AOF持久化存放数据的文件名
appendfsyncappendfsync everysec同步频率:always每个命令都追加;everysec每秒追加;no不主动持久化,把时机交给操作系统
no-appendfsync-on-rewriteno-appendfsync-on-rewrite no子进程执行bgrewriteaof操作和主进程写aof文件是否阻塞,如果no则主进程等待,最安全
auto-aof-rewrite-percentageauto-aof-rewrite-percentage 100重写文件百分比
auto-aof-rewrite-min-sizeauto-aof-rewrite-min-size 64mb重写文件大小的最小值,AOF文件体积大于64mb,且文件体积比上一次重写之后的体积大了至少一倍(100%)的时候,Redis将执行bgrewriteaof命令
aof-load-truncatedaof-load-truncated yes是否忽略最后一个错误指令,有可能正在持久化断点,导致最后一个命令只持久化了一半,如果配置为no则恢复会失败

RDB和AOF对比

DRBAOF
恢复速度
占用空间较小较大
数据完整性丢失数据相对较多几乎不丢失数据
影响性能不影响主进程性能同步频率较高会阻塞主进程,影响性能
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值