关于redis的RDB

关于redis的RDB

   张吉吉     2019年12月17日 01:23     384    

1、持久化

redis是一种非关系型数据库,并且是一种内存数据库,所谓内存数据库就是将数据暂存在内存中,和mysql等不同是写在硬盘上。直接写在硬盘上数据肯定不会丢失,如果是写在内存上,当服务关闭,出现什么故障,内存中的数据就会丢失。所以redis提供了两种将数据存储起来的方式,一种是RDB(快照方式),一种是AOF方式。

 

2、操作执行

(1)手动执行持久化命令

手动执行命令有save和bgsave两个

save

当执行save命令执行快照操作的时候,redis不再响应其他任何的命令。这样造成了redis的阻塞,直到RDB完成为止。

所以当数据量比较大的时候,快照操作持续时间会比较长,会造成业务的中断,这是save命令最大的缺陷。

bgsave

当执行bgsave命令的时候,主进程会fork出一个子进程,子进程去执行快照的操作,而父进程会去继续响应其他命令。这样就不会影响业务上其他操作。

下边执行了save和bgsave的操作。

1.png

 

(2)应用配置文件执行持久化

配置文件中有SNAPSHOTTING模块,这个就是配置RDB的参数模块。也是redis中默认的持久化方案。

<1>save字段

save x y这个是写save字段的模式。

x代表的时间

y代表修改次数

整个的意思就是当redis在x时间内出现了至少y次修改,就执行bgsave命令去做RDB操作。

示例:

save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存

<2>stop-writes-on-bgsave-error字段

默认为yes,当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据。

<3>rdbcompression字段

默认yes,使用LZF方式压缩数据,如果不想消耗CPU资源可以关闭。但是数据集会变得很大。

<4>rdbchecksum字段

默认yes,在redis 5版本后会有数据校验字段,保证数据的安全性。但是会消耗10%的性能。

<5>dbfilename字段

快照名

<6>dir字段

保存快照的路径

 

3、恢复数据

只需要将dump.rdb文件放到配置文件中的dir字段写的目录中就可以。

或者是使用命令你个config get dir

2.png

 

4、RDB的优缺点

rdb用于保存redis数据的快照

优点:

1 一般时候对性能影响较小

2 非常适合做冷备

3 数据恢复快

缺点:

1 如果数据量大时候,会导致cpu和内存占用率升高,影响性能(所以实际操作中,如果开启rdb那么物理内存最好是maxmemory的两倍多)

2 可能会丢失较多数据

 

5、关闭

如果只想使用redis做缓存的话,可以将快照关闭。

只需要注释掉save,或者写成save “ ”就可以。


文章评论

0

其他文章