redis学习 - 数据持久化
Redis提供了多种不同级别的持久化方式:
- RDB 持久化可以在指定的时间间隔内产生数据集的时间点快照(point-in-time snapshot)
- AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾.Redis还可以在后台对AOF文件进行重写(rewrite),使得AOF文件的体积不会超过保存数据集状态所需的实际大小。
- Redis还可以同时使用AOF和RDB持久化。在这种情况下,当Redis重启时,它会优先使用AOF文件来还原数据集,因为AOF文件保存的数据集通常比RDB文件所保存的数据集更完整。
- 可以关闭持久化功能,让数据只在服务器运行时存在。
RDB的优点
- RDB是一个很紧凑的文件,它保存了redis在某个时间点上的数据集。
- RDB非常适用于灾难恢复,它只有一个文件,并且内容紧凑,可以将它传送到别的数据中心
- 可以最大化redis的性能;父进程在保存RDB文件时,唯一要做的就是fork一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无需执行任何磁盘I/O操作
- RDB在恢复大数据集的时候比AOF的速度要快
RDB的缺点
- 因为RDB是保存在某个时间点上的数据集,这样的话,服务器故障可能会丢失数据。
- 每次保存RDB的时候,redis要fork一个子进程,并由子进程来进行实际的持久化工作,在数据集比较大的时候,fork可能会非常耗时,可能会造成服务器停止处理客户端请求;如果数据集非常巨大,并且cpu比较紧张的话,那么 这种停止时间设置可能会长达整整1秒。虽然AOF重写也需要进行fork,但无论AOF重写的执行间隔有多长,数据的耐久性都不会有任何损失
AOF优点
- 使用AOF持久化会让redis变得非常耐久,你可以设置不同的fsync策略,比如无fsync,每秒钟一次fsync,或者每次写入命令是fsync。AOF的默认策略为每秒钟fsync一次,在这种配置下,redis仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据
- AOF文件只是一个日志文件追加操作(append only log),因此对AOF文件的写入不需要进行seek,即使日志因为某些原因而包含了未写入完整命令(比如写入时, 磁盘满了,写入时中途停机等),redis-check-aof工具可以轻易的修复这种问题
- redis可以在AOF文件体积过大时,自动在后台对AOF进行重写,重写后的AOF文件包含了恢复当前数据集所需的最小命令集合。这个重写操作是绝对安全的,因为redis在创建新的AOF过程中,会继续讲命令追加到现有的AOF文件里面,即使重写过程中发生停机,现有的AOF文件也不会丢失,而一旦新AOF文件创建完毕,redis就会从旧文件切换到新AOF文件,并开始对新AOF文件进行追加操作
- AOF文件有序地保存了对数据库执行的所有写入操作,这些写入操作以redis协议的格式保存,因此AOF文件的内容非常容易被人读懂,对文件进行分析也很容易。到处AOF文件也非常简单。
AOF缺点
- 对于相同的数据来说,AOF文件的体积通常要大于RDB文件的体积
- 根据所使用的fsync策略。AOF的速度可能会慢于RDB。
- AOF的bug,曾经因为个别命令的原因,导致AOF文件在重新载入是,无法将数据集恢复成保存时的样子。
redis学习 - 数据持久化的更多相关文章
- redis学习——数据持久化
一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将会丢失,在很多情况下是无法容忍这样的事情的.所以,我们需要将内存中的数据持久 ...
- Redis之数据持久化RDB与AOF
Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...
- 进阶的Redis之数据持久化RDB与AOF
大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存.但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里 ...
- redis配置数据持久化---APPEND ONLY MODE
Redis配置数据持久化---APPEND ONLY MODE 2016年04月01日 19:05:11 阅读数:9918 Redis可以实现数据的持久化存储,即将数据保存到磁盘上. Redis的持久 ...
- Redis学习手册(持久化)
一.Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘. 2). AOF持久化: 该机制将以日志的形式记录服务 ...
- Redis 学习之持久化机制、发布订阅、虚拟内存
一.持久化机制 Redis是一个支持持久化的内存数据库,redis会经常将内存中的数据同步到硬盘上来保证数据持久化,从而避免服务器宕机数据丢失问题,或者减少服务器内存消耗提高性能. 持久化方式: 1. ...
- redis的数据持久化方案
Redis的持久化方案有两种 1.Rdb方式:快照形式,定期将内存中的数据持久化到硬盘.是Redis默认的数据持久化的形式. Rdb:缺点是:数据还没有更新到磁盘上,突然断电,造成数据的不完整性. 在 ...
- redis的数据持久化策略
redis提供了两种不同的持久化方法来将数据存储到硬盘里面.一种方法叫快照,它可以将存在于某一时刻的所有数据都写入硬盘里面.另一种方法叫只追加文件(AOF),它会在执行写命令时,将被执行的写命令复制到 ...
- redis 学习笔记——持久化
redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...
随机推荐
- 关于spring boot 使用 mybatis plus INSERT的时候id报错
mybatis plus 在INSERT的时候会默认自动设置插入id 我当时数据库采用的id自增. 在使用插入语句的时候并没有set ID 但是它默认给了一大串 更改mybatis plus全局配置 ...
- JavaScript学习笔记(七)—— 再说函数
第八章 函数 1 函数声明和函数表达式 差别一:函数声明:函数在执行代码前被创建:函数表达式是在运行阶段执行代码时创建: 差别二:函数声明创建一个与函数同名的变量,并让她指向函数:使用函数表达式,不给 ...
- 切换nPar或vPar的启动模式
在EFI Shell中执行vparconfig即可随意切换vpar和npar模式 该命令在\EFI\HPUX目录下 vparconfig 显示当前的模式 vparconfig reboo ...
- lastlog命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/qiyebao/p/4331078.html last 显示所有用户最后登录信息(会显示系统用户) last -u 50 ...
- 更换 CentOS 7 的下载源为阿里云
http://blog.csdn.net/realghost/article/details/45949759
- b7
组员:陈锦谋 过去两天完成了哪些任务: 细节最后完善 明日计划: 无 还剩下哪些任务: 无 有哪些困难: 暂无 有哪些收获和疑问: 无
- eclipse 项目转as项目时 .so文件 jniLibs的设置
接着上篇:http://blog.csdn.net/u011644423/article/details/46989167 转换项目 还是出现了问题 java.lang.UnsatisfiedLink ...
- 2017 Summary
几门课 基础电路与电子学 知道了一些二极管三极管的基本基本很基本的那种物理知识吧,但是毕竟我是从电信转专业过来的,所以说我内心就是逃避模电这样的课的.上课基本没听,后面只是死命复习了一周,考的还可以. ...
- 软工网络15团队作业8——Beta阶段敏捷冲刺(用户使用调查报告)
一.项目概述 1.项目名称 考研必背 2.项目简介 微信小程序,帮助考研学生记忆单词. 3.项目预期达到目标 用户无需下载app,仅通过微信小程序就可以达到背单词的目的,并且能够制定背单词的计划. 4 ...
- Oracle中SYS_CONNECT_BY_PATH函数的妙用 ;
Oracle 中SYS_CONNECT_BY_PATH函数是非常重要的函数,下面就为您介绍一个使用SYS_CONNECT_BY_PATH函数的例子,实例如下: 数据准备: ),b )); ', 'A' ...