【手把手】教你Redis中RDB和AOF实操

导读:本篇文章讲解 【手把手】教你Redis中RDB和AOF实操,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、将所以的Redis服务全部停掉

service redis_6379 stop

service redis_6380 stop

【手把手】教你Redis中RDB和AOF实操

 2、修改Redis配置文件

以6379为例:

①不让它作为后台进程去运行,让它在前台阻塞着运行,这样可以看到输出的一些信息

【手把手】教你Redis中RDB和AOF实操

 ②将输入信息记录到日志文件的选项关闭,这样信息才会输入到前台显示

【手把手】教你Redis中RDB和AOF实操

③设置RDB

【手把手】教你Redis中RDB和AOF实操

④设置AOF

【手把手】教你Redis中RDB和AOF实操

 ⑤关闭AOF中使用RDB,目的仅是为了验证没有RDB的AOF文件是什么样子的,等会再打开,再来看看混合了RDB以后的AOF文件是什么样子的

【手把手】教你Redis中RDB和AOF实操

 3、删除掉原来Redis中的dump文件

确保在启动的时候,不会加载原先老的数据,并且之后演示中测试的数据也不受老数据的影响

cd /var/lib/redis/6379/

rm -rf dump.rdb

【手把手】教你Redis中RDB和AOF实操

4、启动Redis

redis-server /etc/redis/6379.conf

【手把手】教你Redis中RDB和AOF实操

 Redis成功启动后,会自动在目录下生成一个appendonly.aof空文件,之后的操作都会记录在中。

 5、验证AOF文件

现在Redis中设置一个值

【手把手】教你Redis中RDB和AOF实操

 查看appendonly.aof文件,里面记录了刚刚的那笔操作

【手把手】教你Redis中RDB和AOF实操

*2  意思是:由下面的两个元素组成,这两个元素分别是SELECT和0,意思就是:选择0号库

*3  意思是:由下面的三个元素组成,这两个元素分别是set、k1、xiexun

$6  意思是下面的元素是由几个字节组成:SELECT占6个字节;$1  意思是0占1个字节

千万不要觉得这些说明符号没有作用,作用可太大了。当使用程序读取文件的时候,这些 * 和 $ 就已经告诉你怎么样去正确切割文件里的数据,对于程序员来说可真的是太方便了。

6、验证RDB文件

RDB可以自动,也可以手动,手动的时候通过 save 命令可以触发生成RDB文件,但是 save 是阻塞式命令,当执行 save 以后,Redis就服务就不再对外提供服务,所以一般推荐使用 bgsave

【手把手】教你Redis中RDB和AOF实操

会自动在目录下生成一个dump.rdb文件

【手把手】教你Redis中RDB和AOF实操

前台也能看到刚刚Redis中执行的bgsave操作,生成rdb文件

【手把手】教你Redis中RDB和AOF实操

父进程2675会fork出一个子进程2878去执行,自己本身还是会继续对外提供服务

 打开dump.rdb文件,二进制的序列化文件,正常应该是看不懂的

【手把手】教你Redis中RDB和AOF实操

可以使用 redis-check-rdb dump.rdb 检查rdb文件是否正确,多了看不了,毕竟二进制的文件

【手把手】教你Redis中RDB和AOF实操

 7、验证AOF文件的重写功能

原来Redis中k1的值是xiexun,k2的值是guojing

【手把手】教你Redis中RDB和AOF实操

 现在再去改变k1和k2中的值

【手把手】教你Redis中RDB和AOF实操

 此时再看appendonly.aof文件,按理说反反复复对k1和k2重置里面的值,只需要记录最后一笔操作就行了,中间的流水账没必要反反复复去记。

可以使用 bgrewriteaof 来重写aof文件

【手把手】教你Redis中RDB和AOF实操

【手把手】教你Redis中RDB和AOF实操

重写前后的文件大小差距还是很明显的,此时再看aof文件,里面只记录了最后操作的数据

【手把手】教你Redis中RDB和AOF实操

 8、验证混合RDB的AOF文件

先将原来演示的aof文件和rdb文件全部删掉

【手把手】教你Redis中RDB和AOF实操

关闭演示的6379 Redis服务,重新更改配置文件,开启AOF中使用RDB

【手把手】教你Redis中RDB和AOF实操

 此时再启动Redis之后,就会将aof文件和rdb文件两个文件都自动生成

【手把手】教你Redis中RDB和AOF实操

 再次往Redis中设置k1、k2的值

【手把手】教你Redis中RDB和AOF实操

 到现在为止,aof文件还和之前一样,没有任何区别

【手把手】教你Redis中RDB和AOF实操

 现在,再来重复去设置k1、k2的值,并且触发aof文件重写

【手把手】教你Redis中RDB和AOF实操

此时,再打开aof文件,就会发现不再是原来的操作记录了,而是rdb的二进制文件

【手把手】教你Redis中RDB和AOF实操

 这样的好处就是不用再去浪费CPU算力去排查前面到底做了多少反反复复的操作,极大的减少了CPU资源的占用。而后面再执行的操作,就会仍然以原来的操作记录方式追加到下面

【手把手】教你Redis中RDB和AOF实操

【手把手】教你Redis中RDB和AOF实操

前半段,使用二进制的RDB加快恢复速度,后半段使用操作记录追加方式增量日志,这种方式既保证了恢复的速度,也保证了数据的全量不丢失。

9、关于AOF文件的自动重写

刚刚我们都是手动去重写AOF文件,其实在Redis的配置文件中可以设置AOF文件的自动重写

第一个参数:auto-aof-rewrite-min-size 64mb

意思是Redis启动之后,当AOF文件大小达到64mb,就会触发重写。重写以后可能64mb就变成了16mb,然后再增长到64mb,再重写到32M这样。但是随着数据的递增,总有超过64mb的时候。

此时看第二个参数:auto-aof-rewrite-percentage 100

意思是达到100%之后,就会再增加64mb的空间,就是说当重写完的时候达到64mb以后,就会将有效数据的64mb扩展100%,扩展到128mb。等到重写完的有效数据达到128mb后,在扩展64mb,达到192mb,以此循环。

【手把手】教你Redis中RDB和AOF实操

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111955.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!