redis进阶: 数据持久化

栏目: 数据库 · 发布时间: 6年前

内容简介:redis是内存数据库,即数据库状态都是存储于内存中,因此,当服务器重启或者断开后,数据便会丢失;为了解决数据丢失问题,便需要将数据从内存保持到磁盘中,这就是redis的数据持久化目前,redis实现了两种数据库持久化方案,一种是redis database,即将数据库的内容(key-value)保存为压缩的二进制文件

redis是内存数据库,即数据库状态都是存储于内存中,因此,当服务器重启或者断开后,数据便会丢失;为了解决数据丢失问题,便需要将数据从内存保持到磁盘中,这就是 redis 的数据持久化

目前,redis实现了两种数据库持久化方案,一种是 RDB ,另一种是 AOF ,让我们来聊聊这两种方案

RDB

redis database,即将数据库的内容(key-value)保存为压缩的二进制文件

即便redis服务进程退出,但是RDB文件仍然存在,这样当redis启动时便会自动载入RDB文件以此保证数据不丢失,其流程如下 redis进阶: 数据持久化

1.手动生成RDB文件

redis有两个命令用于生成RDB文件,即 SAVEBGSAVE ,这两个指令的用途都是一样的,唯一的区别在于

SAVE
BGSAVE

其实现源码位于 rdb.c 中的 rdbSave()rdbSaveBackground() 函数,有兴趣的小伙伴可以去看看

从区别来看,很明显,在执行RDB文件的创建首选指令 BGSAVE

2.自动生成RDB文件

一般来说RDB文件的生成并不需要用户去手动执行,redis提供了 save 指令允许用户设置执行条件: 在多少时间内服务器进行多少次修改 ;例如指令 save 500 1 即表示服务器如果满足在500秒之内对数据库执行了至少1次修改,那么就会执行RDB文件的生成

在redis的 serverCron() 时间事件中会去判断是否满足条件并执行RDB文件生成

3.自动加载RDB

RDB文件的生成可以手动执行,但是redis目前并没有提供手动加载RDB文件的操作指令,即RDB文件的载入工作是 在服务器启动的时候自动执行 的,并且在服务器载入RDB文件期间会一直处于堵塞状态

AOF

Append Only File,通过将redis服务器所执行的写指令保存为AOF文件来记录数据库状态

1.何时写入

当用户执行redis写操作时,便会将指令保存到AOF文件中,其流程如下 redis进阶: 数据持久化

2.关于AOF重写

问题:随着数据库服务器运行,AOF文件中的内容会越来越多,因为每一条写指令都需要记录,也因此执行AOF文件来进行数据还原的时间也就越久

解决方案:为了解决这个问题,redis提供了AOF重写 BGREWRITEAOF 指令;原理即 从数据库中读取键现在的值,然后用一条指令去记录键值对,代替之前的多余命令 ,并重新生成一套写指令存储为新的AOF文件,并替换掉旧的AOF文件,这样新AOF文件就不会存在过多的冗余指令,体积包括执行时间也会小很多

3.何时加载AOF

当服务器重启动时会先检测是否有AOF文件,如果有就会载入AOF文件来实现数据一致,如果没有AOF则会检测是否执行RDB载入流程

加载

当服务器启动时会先检测是否有AOF文件,如果有则加载AOF文件,如果没有则会判断是否有RDB文件存在,如果有RDB文件,则加载RDB文件

redis进阶: 数据持久化

相关文档:

redis设计与实现

redis进阶: 过期删除策略

redis进阶: redisObject对象详解

原文地址:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软件人才管理的艺术

软件人才管理的艺术

Michael Lopp / 罗小平 / 人民邮电出版社 / 201008 / 35.00元

本书作者具有15年的硅谷人才管理经验,他在博客上发表了大量探讨软件人才的管理之道的文章,深受读者欢迎。本书素材取自他的博客文章,用深入浅出的语言,讲述发人深思的道理,具有很强的现实操作性。 本书分为三大部分:“管理的箭袋”、“过程就是产品”、“你的其他版本”。前两部分分别讲述了人员与产品的管理,第三部分除了讨论管理之外,还讲述了如何有针对性地准备简历和电话面试,来提高自己面试成功的几率。书中......一起来看看 《软件人才管理的艺术》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试