Redis学习(五)Redis的持久化

一、概述

Redis的高性能是因为它的所有数据都存储在内存中,为了使Redis在重启之后仍然能保证数据不丢失,那么就需要将数据从内存中同步到硬盘上,也就是持久化。Redis的持久化有两种方式:RDB方式、AOF方式,我们可以单独使用一种,也可以两种结合使用。RDB方式是默认支持的,不需要配置,它指的是在指定的时间间隔内将内存中的数据集快照写入到磁盘;AOF方式将以日志的方式记录服务器所处理的每一个操作,在Redis服务器启动之初,它会读取该文件然后重新构建数据库来保证启动后数据是完整的;甚至还可以不持久化,禁用持久化功能,这样就可以Redis是缓存的一种机制。

二、RDB方式

优势:整个Redis数据库将只包含一个文件,那么对于文件备份是非常完美的,并且对于灾难恢复而言Redis可以将文件压缩后转移到其他存储介质上;对于Redis的服务器进程而言在开始持久化它唯一需要做的就是分叉出一些进程之后再由子进程完成持久化的操作,这样就可以避免服务器进程执行IO的操作,相比AOF,如果数据集很大,RDB这种启动的效率更高。

缺点:如果最大限度保证数据不丢失,那么RDB不是很好的选择,因为系统可能在定时前出现些宕机的情况;由于RDB通过fork分叉子进程的方式来协助完成持久化操作如果数据集很大的,整个服务器可能会停止几百毫秒甚至一秒。

RDB是Redis默认支持的,不需要修改什么,但RDB方式有些配置可以修改,进入redis.conf一百四十行左右找到如下信息:


第一行save 900 1指的是每900s至少有一个key发生变化时持久化一次;save 300 10每300s至少有十个key发生变化会持久化一次;save 60 10000每60s至少有一万个key发生变化时会持久化一次。

在190行左右有”dbfilename dump.rdb”,是数据的文件名;保存的路径在”dir ./“中配置

三、AOF方式

优势:AOF方式可以带来更高的数据安全性,Redis中提供了三种存储策略,每秒同步、每修改同步、不同步。事实上每秒同步也是异步完成的,效率也是很高的;每修改同步我们可以视为是同步持久化,每次数据发生变化都会立即记录到磁盘中,安全性最高,但效率是最低的。这种机制在日志文件的写入操作是采用append追加的模式,因此在写入过程中即使出现了宕机的现象,也不会破坏日志文件中已经存在的内容。如果日志过大,Redis可以自动启动重写机制,Redis以append的这个模式不断的将修改的数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于此期间产生了那些修改命令被执行了,因此在进行重写切换的时候可以更好的保证数据安全性。

劣势:对于相同数量的数据集而言,AOF文件要比RDB文件大。根据同步策略的不同,AOF在运行效率上往往会低于RDB。

AOF的配置:


在redis.conf的五百行左右,appendonly表明默认的情况下这种AOF方式没打开,如果想使用AOF则把no改为yes,这个时候就会产生文件appendonly.aof


以上三行就是关于同步策略的设置,always代表每修改一次就会同步到磁盘上,everysec就是每秒同步,no即不同步。

启动了AOF模式后需要重新启动Reids


在服务端,使用vim appenonly.aof进入日志文件将最后一个flushall删除后,重新启动,在客户端就能获取到之前的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值