Redis持久化
Redis的高性能是由于所有的数据都存储在内存当中,为了使Redis在重启之后,仍然能保证数据不丢失,那么就需要将数据从内存当中同步到硬盘上,这个过程称为持久化。
持久化方式:RDB、AOF
RDB持久化:默认的持久化方式
在指定时间间隔内,将数据的快照写入磁盘中
AOF持久化:
以日志的形式,记录服务器执行的每一步操作
在Redis服务器启动之初,读取该文件,来重新构建数据库
无持久化,就是将redis当做一个缓存的机制
同时使用RDB和AOF
1 RDB持久化
优势:
1.使用这种备份策略,Redis数据库将只包含一个数据文件。
2.一旦系统出现灾难性的故障,可以非常容易的进行回滚。比如每小时就将RDB文件备份一份出来,将一个RDB文件转移到其他存储介质上,发生故障时,将要恢复的RDB文件再放回来。
3.性能最大化。Redis服务器恢复持久化数据,是另外开一个子进行进行恢复的,不会阻碍服务器主进程的操作。
4.相比AOF,如果数据量很大,这种方式恢复效率更高。
劣势
1.如果想要最大程度的避免数据的丢失,RDB不是很好的选择。系统可能会在定时持久化之前出现宕机的情况,RDB还来不及保备份数据,数据就丢失了。
2.RDB是通过子进程来完成数据持久化工作,如果数据量过大的情况下,可能会导致整个服务器需要停止几百毫秒。
RDB配置:
redis安装目录:Redis.conf
持久化策略
900秒内如果有一条写入指令,则900s时产生一次快照
300秒内如果有十条写入指令,则300s时产生一次快照
60秒内有一万条写入指令,则进行一次备份
当备份进程出错的时候,主进程停止接收新的写入操作,这样做是为了保护持久化的数据一致性
在备份的时候,需要对RDB文件进行压缩后才保存,建议设置为no
持久化文件保存的位置:
8.2 AOF持久化
AOF配置
redis安装目录:Redis.conf
AOF默认是关闭的
打开AOF:
AOF文件默认的名字:
配置AOF文件的写入方式:
always:一旦缓存区的数据发生变化,就将缓存区内容写入AOF中
everysec:将缓存区内容,每隔一秒写入AOF中,推荐
no:将写入AOF的方式交由操作系统来决定,一般操作系统会等缓存区被填满,才会同步数据到磁盘当中
修改配置文件并重新启动redis:
flushall 清空数据库
打开aof日志文件
数据库还原:可以将flushall删除
再重新启动redis,原来我们flushall前的数据就回来了