redis rdb持久化 解说

来源:互联网 发布:linux xwindows安装包 编辑:程序博客网 时间:2024/06/07 23:33

redis有两种持久化方式,分别是

rdb: redis datebase  简写 rdb

aof: append olny file 简写 aof


这里说一下 rdb模式

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里


Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
 

(这里要说明的一点是 当redis fork出一个子进程的时候,相当于同样的数据要在内存中装两份,这是它的一个不好之处,  这种方式的保存有可能会使最后一次的保存之后的数据丢失

也就是说,最后一次保存了,下一次保存时间还没有到,但在这个时间段出redis服务器挂机,那么这段时间的改动还没有记录到dump.rdb中,就会丢失

)


rdb的配置方式

redis.conf 文件中

save (秒数) (变更次数)

如:

save 900 1//这里是说当redis 中 每900秒种,出现了一次改动(增,删,改)等操作, 就启动保存机制, 保存入dump.rdb

save 300 10 //这里是说当redis 中 每300秒种,出现了10次改动(增,删,改)等操作, 就启动保存机制, 保存入dump.rdb

save 60 10000//如果60秒内,redis 出现了10000次的改动,就马上在后台保存到dump.rdb

如果不想使用rdb方式持久化

可以配置成

save ""  //这样就不使用rdb方式,持久化

也可以不写save这项,也是不使用rdb


当系统没有到达触发保存的时间的时候,可以手动的去强行触发保存命令

在 redis的命令行中 使用 save命令   或者  使和  bgsave命令

两个命令的区别在于

save命令是阻塞式的方法,前后台的写入都暂停,  这个命令一般在 服务器压力不大的时候  (如晚上,浏览量很少的时候)

bgsave 命令是前台的工作不影响后台fork的工作,各个进程还可以做自己的事,(有点消耗资源,问题不大)


配置文件中的选项

stop-writes-on-bgsave-error yes    //当后台保存出错时,前台停止写入  也可以配成 no (在数据精准度要求不高的时候可以用 no )

rdbcompression yes   //保存的时候 redis会启用压缩算法  ,如果改为 no 表示不压缩   (压缩的话相对会对计算机的CPU有点消耗,但这很微小,可以不计,默认yes)

rdbchecksum yes  //因为启动了压缩算法,所以这里会有压缩的  CRC64 校验算法,也就是说 压缩完了之后,还要校验,  (更加消耗CPU) 可以设为no 这里默认就 yes

dbfilename dump.rdb    //这里可以自定义生成的 rdb持久化文件的 名称  默认为 dump.rdb

dir ./    //这里是生成dump.rdb文件的路径  可以自定义 这里是当前目录










0 0
原创粉丝点击