redis学习--的持久化数据备份(RDB和AOF)

接上一篇:安装window下的redis,redis可视化管理工具(Redis Desktop Manager)安装,基础使用,实例化项目

一、dump.rdb文件是怎么生成的

二、什么是redis持久化

三、redis的RDB是什么?

四、redis配置文件redis.config相关配置

五、redis优点

六、redis缺点

redismemcache作为缓存数据库强大的地方:(1)支持数据类型比较多,(2)redis持久化功能。

一、dump.rdb文件是怎么生成的

在redis服务挂掉的时候,根据redis的配置文件,会自动备份数据到本地。

dump.rdb是由redis服务器自动生成的。

默认情况下,每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”文件里,这种持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库恢复到上一次SNAPSHOT的状态。

至于多久一次做一次SNAPSHOT,SNAPSHOT文件的路径和文件名,你可以在redis的config文件中指定。

二、什么是redis的持久化

Redis提供了不同级别的持久化方式:

(1)RDB持久化方式:能够在指定的时间间隔能对你的数据进行快照存储

(2)AOF持久化方式:每次对服务器写的操作,当服务器重启的时候回重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾。redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。

(3)如果你只希望你的数据在服务器运行的时候存在,你可以不使用任何持久化方式。

(4)你也可以同时开启这两种持久化方式。当redis服务重启的时候回优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整

三、Redis的RDB是什么

RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是SNAPSHOT快照。

它恢复时是将快照文件直接写入到内存里,redis会单独创建(fork)一个子进程进行持久化吗,会先将数据写入到一个临时文件中,持久化过程都结束了,在用这个临时文件替换上从持久化好的文件。

整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是敏感,那RDB方式要比AOF方式更加高效。、

redis的缺点是最后一次持久化后的数据可能丢失。

四、redis配置文件redis.config相关配置

(一)RDB快照方式持久化磁盘

先看redis.window.config文件

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

save 900 1
save 300 10
save 60 10000

# By default Redis will stop accepting writes if RDB snapshots are enabled
# (at least one save point) and the latest background save failed.
# This will make the user aware (in a hard way) that data is not persisting
# on disk properly, otherwise chances are that no one will notice and some
# disaster will happen.
#
# If the background saving process will start working again Redis will
# automatically allow writes again.
#
# However if you have setup your proper monitoring of the Redis server
# and persistence, you may want to disable this feature so that Redis will
# continue to work as usual even if there are problems with disk,
# permissions, and so forth.
stop-writes-on-bgsave-error yes

# Compress string objects using LZF when dump .rdb databases?
# For default that‘s set to ‘yes‘ as it‘s almost always a win.
# If you want to save some CPU in the saving child set it to ‘no‘ but
# the dataset will likely be bigger if you have compressible values or keys.
rdbcompression yes

# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.
# This makes the format more resistant to corruption but there is a performance
# hit to pay (around 10%) when saving and loading RDB files, so you can disable it
# for maximum performances.
#
# RDB files created with checksum disabled have a checksum of zero that will
# tell the loading code to skip the check.
rdbchecksum yes

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

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the ‘dbfilename‘ configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir ./

4.1如何触发RDB快照

配置文件中默认的快照配置

save 900 1
save 300 10
save 60 10000

上面的意思就是说:

(1)如果至少一个键改变,会在900秒(15分钟)之后执行save操作

(2)如果至少改变10个键,则在300秒(5分钟)之后执行save操作

(3)如果至少改变10000个键,则在60秒(1分钟)之后执行save操作

命令save:只管保存,其他不管

命令bgsave:redis会在后台异步进行快照操作,快照的同时还可以响应客户端请求。

4.2默认的RDB方式保存的是dump.rdb文件,恢复识别也是dump.rdb

4.3stop-writes-on-bgsave-error yes

如果后台保存到磁盘发生错误,将停止写操作,使用LZF压缩rdb文件,这会耗CPU, 但是可以减少磁盘占用。

4.4rdbcompression yes

保存rdb和加载rdb文件的时候校验,可以防止错误,但是要付出约10%的性能,可以关闭,提高性能。

4.5rdbchecksum yes

导出的rdb文件名

4.6dbfilename dump.rdb

设置工作目录,rdb文件会写到该目录,append only file也会存储在该目录下

4.7dir ./

redis会自动快照保存到磁盘或者调用bgsave,是后台进程完成的,其他客户端任然可以读写redis服务,后台保存快照到磁盘会占用大量的内存。

(二)AOF(append-only file)方式持久化

另外一种方式为递增的方式,将会引起数据变化的操作,持久化到文件中,重启redis的时候,通过操作命令,恢复数据。

每次执行写操作命令之后,都会将数据写到server.aofbuf中。

#
# More details please check the following article:
# http://antirez.com/post/redis-persistence-demystified.html
#
# If unsure, use "everysec".

# appendfsync always
appendfsync everysec
# appendfsync no

# When the AOF fsync policy is set to always or everysec, and a background
# saving process (a background save or AOF log background rewriting) is
# performing a lot of I/O against the disk, in some Linux configurations
# Redis may block too long on the fsync() call. Note that there is no fix for
# this currently, as even performing fsync in a different thread will block
# our synchronous write(2) call.

当配置为always的时候,每次server.aofbuf中的数据写入到文件之后,才会返回到客户端,这样可以保证数据不丢失,但是频繁的IO操作,会降低性能。

everysec每秒写一次,这可能会丢失一秒内的操作。

五、redis优点

(1)适合大规模的数据恢复

(2)对数据完整性和一致性要求不高

六、redis缺点

(1)在一定间隔时间做一次备份,所以redis意外的挂掉的话,就会丢失最后一次快照后的所有修改

(2)fork的时候,内存中的数据被被克隆一份,大致2倍的膨胀性需求考虑

原文地址:https://www.cnblogs.com/chengxs/p/9471550.html

时间: 2024-10-03 01:27:25

redis学习--的持久化数据备份(RDB和AOF)的相关文章

Redis提供的持久化机制(RDB和AOF)

Redis提供的持久化机制 Redis是一种高性能的数据库,可以选择持久化,也可以选择不持久化. 如果要保存,就会存在数据同步的问题,可以简单认为一份数据放在内存中(快照),一份数据放在磁盘上,Redis提供了很灵活的持久化办法: Redis提供了RDB持久化和AOF持久化,本篇文章中将会对这两种机制进行一些对比 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘. 也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为

Redis学习总结(1)——数据持久化

以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和Memcached类似,但是实际使用上最大的区别有两方面: Redis支持多种数据结构类型的value,比如string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型): Memcached在出现系统瘫痪的情况下,无法实现系统恢复,而

redis学习之——持久化RDB 和AOF

RDB: 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里.rdb 保存的是dump.rdb文件 RDB工作原理: Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件.整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方,式要比AOF方式更加

Redis学习手册(持久化)

一.Redis提供了哪些持久化机制: 1). RDB持久化:    该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘.        2). AOF持久化:    该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的.    3). 无持久化:    我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了.    4). 同时应用A

Redis持久化配置(rdb,aof)

Redis的持久化有2种方式 1快照 2是日志 Rdb快照的配置选项(内存中的快照写入磁盘速度更快) 配置文件:save 900 1 // 900秒内,有1条写入,则产生快照 save 300 1000 // 如果300秒内有1000次写入,则产生快照save 60 10000 // 如果60秒内有10000次写入,则产生快照(这3个选项都屏蔽,则rdb禁用) stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入?rdbcompressio

Redis(四)——持久化方案(RDB和AOF使用)

一.持久化的作用 1.什么是持久化 redis的所有数据保存在内存中,对数据的更新将异步的保存到硬盘上 2.持久化的实现方式 快照:某时某刻数据的一个完成备份 -mysql的Dump -redis的RDB 写日志:任何操作记录日志,要恢复数据,只要把日志重新走一遍即可 -mysql的 Binlog -Hhase的 HLog -Redis的 AOF 二.RDB 1.什么是RDB 2.触发机制-主要三种方式 第一种: save(同步) 1 客户端输入save命令---->redis服务端---->

Redis深入学习笔记(三)RDB及AOF流程

RDB是Redis持久化数据的一种方式,是执行时间点的Redis内存快照,redis数据还原时加载rdb文件,Redis的主从数据同步也是基于RDB实现的. RDB流程: 1)执行bgsave命令,Redis父进程判断当前是否存在正在执行的子进程,如RDB/AOF子进程,如果存在bgsave命令直接返回. 2)父进程执行fork操作创建子进程,fork操作过程中父进程会阻塞,通过info stats命令查看latest_fork_usec选项,可以获取最近一个fork操作的耗时,单位为微秒. 3

Redis 学习之持久化机制、发布订阅、虚拟内存

该问使用centos6.5 64位  redis3.2.8 一.持久化机制 Redis是一个支持持久化的内存数据库,redis会经常将内存中的数据同步到硬盘上来保证数据持久化,从而避免服务器宕机数据丢失问题,或者减少服务器内存消耗提高性能. 持久化方式: 1.Snapshotting:快照,redis默认持久化方式,这种方式是将内存中的数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb.可以通过配置设置自动做快照持久化的方式.我们可以配置redis在n秒内如果超过m个key被修改

Redis学习之持久化方式和配置

1. 快照的方式持久化到磁盘 自动持久化规则配置 save 900 1 save 300 10 save 60 10000 上面的配置规则意思如下: #   In the example below the behaviour will be to save: #   after 900 sec (15 min) if at least 1 key changed #   after 300 sec (5 min) if at least 10 keys changed #   after 60