Redis持久化

Redis持久化

Redis是内存数据库,如果不将内存中的数据保存到磁盘中,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久化功能!

RDB(Redis DataBase)
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里。

Redis会单独创建一个fork(子进程)来进行持久化,会先将数据写入到一个临时文件中,等待持久化操作结束然后去替换上次持久化好的正式文件自己变成了新的正式文件,在整个过程中,主进程是不进行任何io操作的所以效率很高,如果需要大规模数据恢复,且对于数据恢复的完整性没那么敏感,RDB方式要比AOF方式更加高效,RDB的缺点就是最后一次持久化的数据可能丢失。默认使用的就是RDB。

rdb保存的文件是 dump.rdb
都是在配置文件中快照中进行配置的

# The filename where to dump the DB
dbfilename dump.rdb

我们自己定义一个测试 60秒被进行5次修改就生产文件

#save 900 1      #900秒进行一次修改就生产一个对应的文件 下面同理
#save 300 10
#save 60 10000
save 60 5

我们在60秒内进行五次操作就会生成一个新的文件

127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> set k5 v5
OK
127.0.0.1:6379>

在这里插入图片描述
我们在关闭客户端以后在重连数据还是存在的,flushall命令也会生产一个dump.rdb文件
触发机制:
1.save的规则满足的情况下,会触发rdb规则
2.执行flushall命令,也会触发
3.退出redis也会产生rdb文件

恢复rdb文件
只需要将rdb文件放到我们的redis启动文件的目录下就可以了,redis启动时会自动检查dump.rdb文件恢复数据。
以上所示几乎就使用默认配置就可以了。

RDB的优点
1.适合大规模数据恢复!
2.对数据的完整性的要求不高!

RDB的缺点:
需要一定的时间间隔才会触发,最后一次持久化可能宕机,那最后一次持久化的数据就会丢失。
fork进程的时候,会占用一定的内存空间

AOF(Append Only File)
将我们的所有命令都记录下来,history,恢复的时候就把这个文件全部执行一遍。
以日志的方式来记录每一个操作,将Redis所有的执行过的指令记录下来(读的操作不记录),只许追加文件但是不可以改写文件,redis启动之初会读取该文件重构数据结构,换言之就是redis重启的时候根据日志文件的内容将写的指令(读的操作不记录)从头到尾执行一次以完成数据恢复。

配置文件:

############################## APPEND ONLY MODE ###############################

# By default Redis asynchronously dumps the dataset on disk. This mode is
# good enough in many applications, but an issue with the Redis process or
# a power outage may result into a few minutes of writes lost (depending on
# the configured save points).
#
# The Append Only File is an alternative persistence mode that provides
# much better durability. For instance using the default data fsync policy
# (see later in the config file) Redis can lose just one second of writes in a
# dramatic event like a server power outage, or a single write if something
# wrong with the Redis process itself happens, but the operating system is
# still running correctly.
#
# AOF and RDB persistence can be enabled at the same time without problems.
# If the AOF is enabled on startup Redis will load the AOF, that is the file
# with the better durability guarantees.
#
# Please check http://redis.io/topics/persistence for more information.

appendonly no    #默认不开启的 需要开启的话设置为yes
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"  #生成的名字

appendonly no #默认不开启的 需要开启的话设置为yes
appendfilename “appendonly.aof” #生成的名字
开启之后默认配置为一秒钟写一次日志也就是一秒钟记录一次
重启redis就生效了。
如果这个aof文件有错位,这时候redis是启动不了的,我们需要修复aof文件。
reids提供了一个工具 redis-check-aof --fix然后重启恢复

aof重写
因为aof默认就是无限追加,文件会越来越大如果aof越来越大,如果文件大于64,太大了就会fork一个新的进程来重写文件。

AOF的优点
1.每一次修改都能同步,文件的完整性比较好
2.默认开启每秒一次 可能会丢失一秒的数据
3.从不同步,效率是最高的

AOF的缺点:
1.相对于数据文件来说,aof远远大于rdb,修复速度也比rdb慢
2.aof运行效率也要比rdb慢,所以redis默认配置就是rdb持久化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值