Redis的持久化机制-RDB

RDB: Redis DataBase

1. 什么是RDB

RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。

2. 备份与恢复

内存备份 --> 磁盘临时文件
临时文件 --> 恢复到内存

3. RDB优劣势

  • 优势

    1. 每隔一段时间备份,全量备份
    2. 灾备简单,可以远程传输
    3. 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的的完整性
    4. 相对AOF来说,当有更大文件的时候可以快速重启恢复
  • 劣势
    1. 发生故障是,有可能会丢失最后一次的备份数据
    2. 子进程所占用的内存比会和父进程一模一样,如会造成CPU负担
    3. 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。

4. RDB的配置

  1. 保存位置,可以在redis.conf自定义:
    /user/local/redis/working/dump.rdb
  2. 保存机制:
save 900 1
save 300 10
save 60 10000
save 10 3
* 如果1个缓存更新,则15分钟后备份
* 如果10个缓存更新,则5分钟后备份
* 如果10000个缓存更新,则1分钟后备份
* 演示:更新3个缓存,10秒后备份
* 演示:备份dump.rdb,删除重启
  1. stop-writes-on-bgsave-error

    • yes:如果save过程出错,则停止写操作
    • no:可能造成数据不一致
  2. rdbcompression
    • yes:开启rdb压缩模式
    • no:关闭,会节约cpu损耗,但是文件会大,道理同nginx
  3. rdbchecksum
    • yes:使用CRC64算法校验对rdb进行数据校验,有10%性能损耗
    • no:不校验

总结

RDB适合大量数据的恢复,但是数据的完整性和一致性可能会不足。

原文地址:https://www.cnblogs.com/gaopengpy/p/12189900.html

时间: 2024-11-08 11:06:43

Redis的持久化机制-RDB的相关文章

Redis的持久化机制(RDB、AOF)

1. 为什么需要持久化? 因为Redis是内存数据库,它将自己的数据存储在内存里面,一旦Redis服务器进程退出或者运行Redis服务器的计算机停机,Redis服务器中的数据就会丢失. 为了避免数据丢失,所以Redis提供了持久化机制,将存储在内存中的数据保存到磁盘中,用于在Redis服务器进程退出或者运行Redis服务器的计算机停机导致数据丢失时,快速的恢复之前Redis存储在内存中的数据. Redis提供了2种持久化方式,分别为: RDB持久化 AOF持久化 接下来,我们一一详解. 2. R

Redis数据持久化机制AOF原理分析二

Redis数据持久化机制AOF原理分析二 分类: Redis 2014-01-12 15:36  737人阅读  评论(0)  收藏  举报 redis AOF rewrite 目录(?)[+] 本文所引用的源码全部来自Redis2.8.2版本. Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c 在阅读本文之前请先阅读Redis数据持久化机制AOF原理分析之配置详解文章,了解AOF相关参数的解析,文章链

Redis源码剖析和注释(十八)--- Redis AOF持久化机制

Redis AOF持久化机制 1. AOF持久化介绍 Redis中支持RDB和AOF这两种持久化机制,目的都是避免因进程退出,造成的数据丢失问题. RDB持久化:把当前进程数据生成时间点快照(point-in-time snapshot)保存到硬盘的过程,避免数据意外丢失. AOF持久化:以独立日志的方式记录每次写命令,重启时在重新执行AOF文件中的命令达到恢复数据的目的. Redis RDB持久化机制源码剖析和注释 AOF的使用:在redis.conf配置文件中,将appendonly设置为y

Redis 的持久化机制

Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制. Redis 的持久化机制有两种,第一种是快照,第二种是 AOF 日志.快照是一次全量备份,AOF 日志是连续的增量备份.快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记录的是内存数据修改的指令记录文本.AOF 日志在长期的运行过程中会变的无比庞大,数据库重启时需要加载 AOF 日志进行指令重放,这个时间就会

Redis系列之----Redis的两种持久化机制(RDB和AOF)

Redis的两种持久化机制(RDB和AOF) 什么是持久化 ???Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望Redis能够将数据从内存中以某种形式保存到磁盘中,使得重启的时候可以加载磁盘中的文件记录恢复数据,这一过程便是Redis的持久化. ???Redis支持两种持久化机制,一种是RDB,另一种是AOF.Redis默认情况下使用RDB方式进行持久化.两种持久化可以单独使用其中的一种,也可以二者结合使用,

redis的持久化方案RDB和AOF

RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘.Redis默认支持的持久化方案.速度快但是服务器断电的时候会丢失部分数据 AOF形式:append only file.把所有对redis数据库操作的命令,增删改操作的命令.保存到文件中.数据库恢复时把所有的命令执行一遍即可.两种持久化方案同时开启使用AOF文件来恢复数据库.能保证数据的完整性,但是速度慢 两者如何选择? 如果你没有数据持久化的需求,可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache

LINUX系统编程 由REDIS的持久化机制联想到的子进程退出的相关问题

19:22:01 2014-08-27 引言: 以前对wait waitpid 以及exit这几个函数只是大致上了解,但是看REDIS的AOF和RDB 2种持久化时 均要处理子进程运行完成退出和父进程需要做的什么事情,所以特定看了UNIX环境编程和LINUX系统编程这2本书 重新梳理下整个要点. 内容: 一般而言: 如果程序类似于下面的情况: if((pid=fork())==0) { dochildtthing(); exit(0); } else if(pid>0) { dofathertt

redis的持久化机制

redis简介 redis是一个基于内存的nosql数据库,和传统关系数据最大的区别就是数据是存在内存中而不是硬盘上,从而带来了tps的巨大提升.但是基于内存的数据库最大的缺陷就是机器断电或者系统崩溃后数据会全部丢失.但是redis可以有一套自己的持久化机制,可以让他在系统断电或者崩溃后尽可能的少丢数据.下面就来总结下redis提供的持久化机制的各个特性. redis提供的持久化选项 redis一共提供两种不同的持久化方法.一种是快照(snapshotting) 它可以将存于某一时刻的数据都写入

redis整理の持久化机制

redis是一个支持持久化的内存数据库,也就是说 redis 需要经常将内存中的数据同步到磁盘 来保证持久化.redis 支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另 一种是 Append-only file(缩写 aof)的方式. snapshotting方式 快照是默认的持久化方式.这种方式是就是将内存中数据以快照的方式写入到二进制文件中, 默认的文件名为 dump.rdb.可以通过配置设置自动做快照持久化的方式.我们可以配置 redis 在 n 秒内如果超过