Redis——持久化

Redis的持久化包括RDB和AOF两种方式,RDB是通过内存快照保存数据,AOF则是记录操作日志。RDB持久化可手动或自动触发,通过save或bgsave命令,而AOF则可以配置同步策略。AOF文件通常比RDB大,但支持命令重写以优化磁盘空间。
摘要由CSDN通过智能技术生成

Redis是一个非关系型的键值对内存型数据库。(也就是说如果Redis关机之后,数据就会自动清除。)

一、持久化

Redis的持久化分为RDB,AOF。

(1)RDB持久化:

也就是通过把内存的数据以快照文件尾缀为“.rdb”)记录到磁盘里面去,当Redis故障时(也就是Redis宕机时就会故障重启。)从磁盘里面读取快照文件,恢复数据。

那么开启RDB持久化,有两种方式。一种是手动,一种是自动。

1.手动方式:
a.同步RDB(Save):

也就是在Redis里面执行save语句。此时,就会把当前的数据进行的快照文件生成。然后放入到磁盘中去。(因为过程中都是使用主线程来进行RDB,因为锁的原因,其他子线程等所有命令都会被阻塞)

b.异步RDB(bgsave):

也就是使用Redis的子线程来进行RDB,此时子线程之间的操作互不影响。并且不影响主线程的进展。

原理:

2.自动方式:

也就是Redis会自己使用子线程来进行快照文件生成。不需要我们手动执行命令。

那我们如何去设置Redis里面的参数,来让他以这个参数来进行自动工作咧?

配置文件的部署:

假设我们使用docker来布置Redis的话,我们来对redis进行RDB自动配置的一个部署。

大前提:在docker生成Redis容器时一定要把配置文件挂在到宿主机的某个位置。不然Redis时会被硬解码写死在Redis里面,我们无法进入的。

因为我们这里已经把宿主机的redis配置文件与docker生成的redis容器的配置文件已经挂载在一起了。所以我们只需要修改宿主机的redis配置文件,然后重启redis容器就可以生效了。

注意:记得加上    -it   !!!     -it  !!!  因为这样才会让宿主机容器与redis容器里面的配置关联。

我们来看一下redis的配置文件里面的各自参数代表些什么?

开启RDB自动生效:

(1)确定快照文件的自动生成时间限制。

(2)快照文件是否进行压缩处理(不建议开启,因为开启了会占用cpu资源!)

快照文件压缩(指针对磁盘容量较小的时候使用)

(3)快照文件的名字以及存放位置。

自定义快照文件名字以及存放地址

当然:手动模式的时候也是会根据这个配置信息来生成快照文件。

RDB​​​​​快照文件​​

注意:想让rdb文件失效,也就是清空记录,一定要把redis服务关闭之后,再删除rdb文件才会真正的把数据清空。docker部署redis的时候做不到这个操作。所以建议不使用docker来部署redis。

(2)AOF持久化:

Append Only File:追加文件,来实现数据操作记录。我们可以理解为就是一个日志文件。就是用来记录操作。

开启AOF以及自定义AOF文件名​​

那为什么没有自定义存放位置咧?因为RDB的自定以存放位置就是AOF的存放位置,但是如果按照上面配置过后,重启redis之后,还是和之前一样没有任何响应的时候,建议直接到容器内部执行

与RDB一样也是分手动启动或者自动启动。

自动启动:
同步刷盘:也就是每执行一个redis命令,都会把命令记录直接放入aof文件里面去。
每秒刷盘:把1s里面执行的所有redis命令放入到aof缓冲区里面区,当1s之后就把这些命令记录全部放入aof文件里面去

手动启动:

 操作系统控制:

我们现在回过头来想一个问题,究竟是RDB文件大还是AOF文件大?

当然是AOF文件大!因为AOF是每一次的操作命令都会被记录下来。但是我们知道AOF是每次记录同一个key的value值时,只对最后一次操作的value有效。那之前记录的命令那就是多余的命令,这样非常的占用磁盘空间,为此redis就有aof文件重写功能来应对。

 AOF文件重写:

把文件进行重写,把多余的命令进行总和压缩。

此时与之前AOF文件记录过程一样。也是有分手动启动,自动启动。

手动启动:

使用bgrewriteaof命令即可对AOF文件进行重写。

自动启动:

其实也就是在aof文件小于64mb的时候,不进行重写,当aof文件大于64mb的时候,aof才会进行重写。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值