redis学习 持久化方式 RDB

持久化的作用:

(1)定义:

redis所有的数据都是在内存中的,对数据的更新异步的保存到磁盘上

rdb是redis内存到硬盘的快照,用于持久化

(2)持久化方式:

快照:msql的dump方式 redis的RDB

写日志:MYSQL的binlog redis的AOF

(1)RDB方式:

什么是rdb:

将redis内存中的数据以二进制的方式保存在硬盘上,当redis断电重启时;从二进制的rdb文件中恢复

触发机制:

save命令(同步命令); 执行该命令,其他的命令都会被阻塞

      客户端执行完save命令之后,redis会生成rdb文件,存储在磁盘上

      造成的问题:当内存中数据过多时,会将其他的命令阻塞,因为是单线程的

      若存在老的rdb文件 ,将老的rdb文件替换掉

      优点:不需要fork操作,所以不需要消耗额外的内存

      缺点:会阻塞掉客户端的命令

bgsave(异步命令):

      客户端执行完bgsave之后,redis的主进程会fork出子进程来完成创建rdb的过程

      fork过程是很快的,但是若执行变慢也会阻塞掉其他的进程,一般不会

      此时其他命令过来reedis会去执行,不会被阻塞。

      文件策略同上

      优点不会阻塞客户端的命令

      但是会消耗内存来进行fork操作 

自动:

     自动的生成rdb文件 使用了bgsave命令

     自动生成的相关配置:

          save 900 1 900s内执行了1次redis操作 会进行rdb

          save 300 10 300s内执行了10次redis操作 会进行rdb

          save 60 10000  60s内执行了10000次redis操作 会进行rdb

          dbfilename dump-${port}.rdb  rdb文件的名称用机器的端口号来区分

          dir /diskPath  RDB文件所在的文件路径

          stop-writes-on-bgsave-error  yes  bgsave出现错误就停止rdb文件的写入

         rdbcompression yes 对rdb文件进行压缩

         rdbchecksum  yes 开启校验和操作

猜你喜欢

转载自blog.csdn.net/qq_32182461/article/details/82423424