051. Redis 持久化机制

Stella981
• 阅读 713

1. 持久化介绍


  • Redis 的数据存在在内存中,如果没有配置持久化,redis 重启后数据就全丢失了,于是需要开启 redis 的持久化功能,将数据保存到磁盘上,当 redis 重启后,可以从磁盘中恢复数据。

051. Redis 持久化机制

2. 持久化的方式


  • RDB 持久化:RDB 持久化能够在指定的时间间隔对你的数据进行快照存储。
  • AOF(append only file)持久化:AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。

3. RDB 持久化方式


1. 操作方式

  • 客户端直接通过命令 BGSAVE 或者 SAVE 来创建一个内存快照。

    • BGSAVE 调用 fork 来创建一个子线程,子线程负责将快照写入磁盘,而父进程仍然继续处理命令。
    • SAVE 执行 SAVE 命令过程中,不再响应其他命令。
  • 在 redis.conf 中调整 save 配置选项,当在规定的时间内,Redis 发生了写操作的个数满足条件,会触发 BGSAVE 命令。

    # 900 秒之内至少一次写操作
    save 900 1
    # 300 秒之内至少发生 10 次写操作
    save 300 10
    # 60 秒之内至少发生 10000 次写操作
    save 60 10000
    
  • save 5 2:每 5 秒检查一次,只要在连续的检查中出现2次操作,就可以发出。比如 1 秒的时候,做了一次写操作,第 10 秒的时候又进行了一次写操作,是可以出发 BGSAVE 命令的。

2. 优点和缺点

优点

缺点

对性能影响最小。

同步时丢失数据。

RDB 文件进行数据恢复比使用 AOF 要快很多。

如果数据集非常大且 CPU 不够强(比如单核 CPU),Redis 在 fork 子进程时可能会消耗相对较长的时间,影响 Redis 对外提供服务的能力。

4. AOF 持久化方式


1. 开启 AOF 持久化

appendonly yes
  • 相关的修改还有 appendfilenameappendfsync

2. AOF 策略调整

  • 每次有数据修改发生时都会写入 AOF 文件 appendfsync always
  • 每秒钟同步一次,该策略为 AOF 的缺省策略 appendfsync everysec
  • 从不同步。高效但是数据不会被持久化 appendfsync no

3. 优点和缺点

优点

缺点

最安全。

文件体积大。

容灾。

性能消耗比 RDB 高

易读,可修改。

数据恢复速度比 RDB 慢。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Redis持久化RDB和AOF实现原理
Redis持久化RDB和AOF为什么Redis需要持久化?因为Redis属于内存型数据库,数据是储存在内存当中的,当遇到不可抗力因素,比如断电,那么储存在内存中的数据就会丢失。所以为了保证数据的完整性,我们需要做持久化操作,来保证数据的完整性。Redis中都有哪些持久化机制?Redis早
Wesley13 Wesley13
3年前
qhfl
Redis  Redis是完全开源免费的,遵守BSD协议,是一个高性能的keyvalue数据库。  Redis有以下特点:    Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。    Redis支持五种数据类型。    Redis支持数据库备份。  Redi
可莉 可莉
3年前
051. Redis 持久化机制
1\.持久化介绍Redis的数据存在在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。!image20200511165351687(https://oscimg.oschina.net/os
Stella981 Stella981
3年前
Redis持久化的几种方式——深入解析RDB
Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便Redis重启时能够从磁盘中恢复原有的数据,而整个过程就叫做Redis持久化。!image.png(https://oscimg.oschina.net/oscnet/232e657dae2
Stella981 Stella981
3年前
Redis——持久化数据
Redis被称为是内存数据库,那是因为它会将其所有数据存储在内存里,因此Redis具有强劲的速度性能,但是,也正因为数据存储在内存中,当Redis重启后,所有存储在内存的数据就会丢失。为了使得数据持久化,Redis提供了两种方式:RDB方式和AOF方式。一、RDB方式RDB方式的持久化是通过快照(snapshotting)完成的,
Stella981 Stella981
3年前
Redis—持久化
一、持久化简介Redis的数据全部存储在内存中,如果突然宕机,数据就会全部丢失,因此必须有一套机制来保证Redis的数据不会因为故障而丢失,这种机制就是Redis的持久化机制,它会将内存中的数据库状态保存到磁盘中。持久化发生了什么|从内存到磁盘
Stella981 Stella981
3年前
Redis 持久化(10)
持久化机制Redis速度快,很大一部分原因是因为它所有的数据都存储在内存中。如果断电或者宕机,都会导致内存中的数据丢失。为了实现重启后数据不丢失,Redis提供了两种持久化的方案,一种是RDB快照(RedisDataBase),一种是AOF(AppendOnlyFile)。RDBRDB是Redis默认的持久化方案。当满足一定条
Stella981 Stella981
3年前
Redis持久化存储详解(一)
为什么要做持久化存储?持久化存储是将Redis存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道Redis是一个基于内存的nosql数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。持久化存储分类在Redis中,持久化存储分为两种。一种是aof日志追加的方式
Stella981 Stella981
3年前
Redis几个问题总结
redis持久化策略redis是一个内存数据库,但是它提供了持久化机制。即把数据永久的存储在磁盘上。我们来看看这个redis保存数据的流程(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。(3)服务端调用write这个系统调用,将数据往磁盘上写(数据在系
子非鱼 子非鱼
2年前
Redis高级
第一章Redis的持久化由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且Redis默认开启的数据持久化方式为RDB方式。1、RDB持久化方案Redis会定期保存数据快照至一个rbd文件中,并在启动时自动