面试官:你说你精通Redis,你看过持久化的配置吗?(一)

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前边我们已经介绍了Redis五种数据类型的命令配置文件的基本配置,接下来让我们从理论和配置两个层面来揭开Redis持久化的神秘面纱。

所谓持久化可以简单理解为将内存中的数据保存到硬盘上存储的过程。持久化之后的数据在系统重启或者宕机之后依然可以进行访问,保证了数据的安全性。

Redis有两种持久化方案,一种是快照方式(SNAPSHOTTING),简称RDB;一种是只追加模式(APPEND ONLY MODE),称为AOF。本文我们先来了解下 RDB 的相关配置。

RDB

RDBRedis DataBase的缩写,是 Redis 默认的持久化方案。它能够在指定的时间间隔内将内存数据集快照(snapshot)写入磁盘,恢复时将快照文件( dump.rdb )读回内存。

我们先来扒一下配置文件中的SNAPSHOTTING:

配置文件

save <seconds> <changes>

在给定的秒数内,如果对数据库执行的写入操作数达到设定的值,则将数据同步到数据文件。支持多个条件配合,Redis默认配置文件中提供了三个条件:

save 900 1	//900s内有1个更改
save 300 10	//300s内有10个更改
save 60 10000	//60s内有10000次更改
复制代码

注意:若不想用RDB方案,可以把 save "" 的注释打开,上边三个注释掉。

stop-writes-on-bgsave-error yes

bgsave出现错误时,Redis是否停止执行写命令;

  • 如果为yes,则当硬盘出现问题时,Redis将停止接受写入操作,这样我们可以及时发现,避免数据的大量丢失;
  • 如果为no,则Redis无视bgsave的错误继续执行写命令。

如果已经设置了对Redis服务器的正确监视和持久性,即采用了其他手段发现和控制数据完整性,可能希望禁用此功能,以便即使在磁盘、权限等方面出现问题时,Redis仍能正常工作。

注意:如果后台保存过程将再次开始工作,Redis将自动允许再次写入。

rdbcompression yes

指定存储到本地数据库时是否压缩Redis采用LZF压缩)数据,默认为yes。如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变得巨大。

rdbchecksum yes

RDB版本5开始,在存储快照后,还可以使用CRC64算法来进行数据校验,CRC64校验放在文件的末尾。开启之后,保存和加载RDB文件时会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

禁用校验和创建的RDB文件的校验和为零,这将告诉加载代码跳过检查。

dbfilename dump.rdb

指定本地数据库文件名,重启之后自动加载进内存,手动执行save 命令的话即刻生效。

大坑请注意flushallshutdown命令都会清空并提交至dump.rdb

dir ./

指定本地数据库存放目录。

下文我们将讲述 RDB 方式的常见问题及优缺点分析。如果你有不同的意见或者更好的idea,欢迎联系阿Q,添加阿Q可以加入技术交流群参与讨论呦!

猜你喜欢

转载自juejin.im/post/7017682527380832293