Redis 持久化

这篇具有很好参考价值的文章主要介绍了Redis 持久化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

默认情况下,redis 工作时所有数据都是存储于内存中的,不论是否有磁盘上的持久化数据,都是工作于内存当中,redis 本身就是一个内存的数据库,如果 redis 崩溃或断电导致所有数据丢失,所以 redis 提供了持久化功能来保证数据的可靠性, redis 持久化有两种实现:RDB 和 AOF

1、RDB 持久化

Redis 持久化,Redis,redis,数据库,缓存

RDB 持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是 fork 一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

RDB 持久化是默认启动的持久化机制;按事先定制的策略,周期性地将数据保存至磁盘,数据文件默认为 dump.rdb。

RDB 持久化有两种方式:

  • 借助于配置文件所定义的 save 和策略进行保存。
  • 客户端使用 SAVE 或 BGSAVE 命令启动快照保存机制。

SAVE 命令: 同步保存,在客户端使用 save 保存快照时,是在 redis 主线程中保存快照;因为 redis 的主线程是用于处理请求的,所以此时会阻塞所有客户端请求,每次的保存快照都是把内存中的数据完整的保存一份,并非是增量的,如果内存中的数据比较大,而还有大量的写操作请求时,此方式会引起大量的 I/O,会导致 redis性能下降。

BGSAVE 命令异步方式,将立即返回结果,但自动在后台保持操作,所以 BGSAVE命令启动以后,前台不会被占用,客户端的请求是不会被阻塞(主进程不会被阻塞)。如果是在配置文件中定义的 save,那么 redis 在持久化的时候,则会开启另外的进程去处理,不会阻塞 redis 的主进程redis 的 RDB 持久化不足之处则是,一旦数据出现问题,由于 RDB 的数据不是最新的,所以基于 RDB 恢复过来的数据一定会有一部分数据丢失,也就是 RDB 保存之后的修改的数据会丢失。


a. RDB 优点

① 采用 RDB 方式,那么你的整个 Redis 数据库将只包含一个文件,这对于文件备份而言是非常方便的,因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。

② 性能最大化。对于 Redis 的服务进程而言,在开始持久化时,它唯一需要做的只是 fork 出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行 IO 操作了。

③ 相比于 AOF 机制,如果数据集很大,RDB 的启动效率会更高。

b. RDB 缺点

① 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么 RDB 将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

② 由于 RDB 是通过 fork 子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是 1 秒钟。

c. 配置RDB相关参数
# 创建 RDB 文件路径
mkdir -p /usr/local/redis/data 
vim /usr/local/redis/etc/redis.conf
#-----------------配置文件--------------------------------------------------------
# 在进行快照备份时,一旦发生错误的话是否停止写操作
stop-writes-on-bgsave-error yes 
# RDB 文件是否使用压缩,压缩会消耗 CPU 
rdbcompression yes 

#是否对 RDB 文件做校验码检测,此项定义在 redis 启动时加载 RDB 文件是否对文件检查校验码,
#在 redis 生成 RDB 文件是会生成校验信息,在 redis 再次启动或装载 RDB 文件时,
#是否检测校验信息,如果检测的情况下会消耗时间,会导致 redis 启动时慢,
#但是能够判断 RDB 文件是否产生错误
rdbchecksum yes 

# 定义 RDB 文件的名称
dbfilename dump.rdb 
# 定义 RDB 文件存放的目录路径
dir /usr/local/redis/data 
#-----------------配置文件--------------------------------------------------------

#关闭 redis,这里注意,设置完密码后关闭 redis 需要携带密码
redis-cli -a 123456 shutdown 
redis-server /usr/local/redis/etc/redis.conf 
redis-cli -a 123456 
127.0.0.1:6379> config get dir

Redis 持久化,Redis,redis,数据库,缓存

2、AOF 持久化

Redis 持久化,Redis,redis,数据库,缓存

AOF:Append Only File,持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。AOF 类似于 MySQL 的二进制日志,记录每一次 redis 的写操作命令,以顺序 IO 方式附加在指定文件的尾部,是使用追加方式实现的,这也叫做一种附加日志类型的持久化机制,由于每一次的操作都记录,则会随着时间增长而增大文件的容量, AOF 不像 RDB,RDB 是保存数据集的本身。

a. AOF 优点

① AOF 机制可以带来更高的数据安全性,即数据持久性。Redis 中提供了 3 中同步策略,即每秒同步、每修改同步和不同步。事实上,对于每秒同步,一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失。而每修改同步,即每次发生的数据变化都会被立即记录到磁盘中。至于无同步,无需多言,我想大家都能正确的理解它。

② 由于 AOF 机制对日志文件的写入操作采用的是 append 模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在 Redis 下一次启动之前,我们可以通过 redis-check-aof 工具来帮助我们解决数据一致性的问题。

③ 如果日志过大,Redis 可以自动启用 rewrite 机制。即 Redis 以 append 模式不断的将修改数据写入到老的磁盘文件中,同时 Redis 还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行 rewrite 切换时可以更好的保证数据安全性。

④ AOF 包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。

b. AOF 缺点

① 对于相同数量的数据集而言,AOF 文件通常要大于 RDB 文件。RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

② 根据同步策略的不同,AOF 在运行效率上往往会慢于 RDB。

c. 配置AOF相关参数
vim /usr/local/redis/etc/redis.conf
#--------------------------------配置文件Start-----------------------------------------
# 定义是否开启 AOF 功能,默认为关闭,启用修改为 yes
appendonly no

# 定义 AOF 文件
appendfilename "appendonly.aof" 

# 表示每次收到写命令时,立即写到磁盘上的 AOF 文件,
# 虽然是最好的持久化功能,但是每次有写命令时都会有磁盘的 I/O 操作,容易影响redis 的性能
appendfsync always 

# 表示每秒钟写一次,不管每秒钟收到多少个写请求都往磁盘中的 AOF 文件中写一次
appendfsync everysec

# 表示 append 功能不会触发写操作,所有的写操作都是提交给 OS,由 OS 自行决定是如何写的
appendfsync no 

# 当此项为 yes 时,表示在重写时,对于新的写操作不做同步,而暂存在内存中
no-appendfsync-on-rewrite no

# 表示当前 AOF文件的大小是上次重写 AOF文件的二倍时,则自动日志重写过程
auto-aof-rewrite-percentage 100

# 定义 AOF 文件重写过程的条件,最少为定义大小则触发重写过程
auto-aof-rewrite-min-size 64mb 
#--------------------------------配置文件End-----------------------------------------

注意:持久本身不能取代备份;还应该制定备份策略,对 redis 数据库定期进行备份;

d. RDB 与 AOF 同时启用注意事项

① BGSAVE 和 BGREWRITEAOF 不会同时执行,为了避免对磁盘的 I/O 影响过大, 在某一时刻只允许一者执行; 如果 BGSAVE 在执行当中,而用户手动执行 BGREWRITEAOF 时,redis 会立即返回 OK,但是 redis 不会同时执行,会等 BGSAVE 执行完成,再执行 BGREWRITEAOF。

② 在 Redis 服务器启动用于恢复数据时,会优先使用 AOF

③ 数据恢复:每次 redis 重启都会去读取相对应的文件,如果误删除可以用备份文件直接替换 原来的文件,dump.rdb 或者 appendonly.aof。文章来源地址https://www.toymoban.com/news/detail-802646.html

到了这里,关于Redis 持久化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • redis原理(四)数据安全之数据持久化

    目录 一、RDB快照持久化 原理 二、RDB快照持久化配置(redis.conf): 三、触发RDB备份: 1、自动备份,需配置备份规则: 2、手动执行命令备份(save | bgsave): 3、flushall命令: 四、RDB的备份恢复: 五、RDB优缺点: 以下配置以Redis-x64-3.2.100.zip为例,介绍下 RDB快照持久化  一、

    2024年01月17日
    浏览(38)
  • redis数据安全(三)数据持久化 AOF

    接上一篇RDB,本篇看下Redis数据持久化的第二种方式AOF。 目录 一、AOF原理 1、写入机制: 2、缓冲机制: 3、重写机制 : 4、运行流程 二、AOF文件配置 1、开启AOF: 2、自动触发AOF重写  3、重写规则: 三、AOF的备份恢复: 1、正常恢复: 2、异常恢复: 四、重写流程: 五、

    2024年01月19日
    浏览(46)
  • redis数据安全(二)数据持久化 RDB

    目录 一、RDB快照持久化 原理 二、RDB快照持久化配置(redis.conf): 三、触发RDB备份: 1、自动备份,需配置备份规则: 2、手动执行命令备份(save | bgsave): 3、flushall命令: 四、RDB的备份恢复: 五、RDB优缺点: 以下配置以Redis-x64-3.2.100.zip为例,介绍下 RDB快照持久化  一、

    2024年01月20日
    浏览(48)
  • docker安装redis并持久化数据

    这里是没有任何的密码 密码是刚才设置的Maqiang

    2024年02月11日
    浏览(44)
  • Redis---数据持久化之RDB与AOF

    Redis 数据库文件,全称 Redis DataBase,数据持久化方式之一,数据持久化 默认方式 ,按照指定时间间隔,将内存中的数据及快照写入硬盘 定义RDB文件名 dbfilename \\\"dump.rdb\\\" RDB指dump.rdb文件; redis数据每次存盘,如果不指定持久化的方式,数据就会默认存入dump.rdb文件中 数据从内存

    2023年04月19日
    浏览(44)
  • 【NOSQL数据库】Rdeis持久化

    在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据

    2024年02月12日
    浏览(59)
  • Redis - redis.windows.conf配置文件及RDB和AOF数据持久化方案

    Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。 Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用。 该机制是指

    2024年01月24日
    浏览(55)
  • Redis九种数据类型及其持久化机制:探索数据存储的奇妙世界

    目录 一、9种数据类型 3.1 Key操作 3.1.1 相关命令 练习: 3.2 String 3.2.1 结构图 3.2.2 相关命令  练习: 3.3 List(双向的链表) 3.3.1 结构图 3.3.2 相关命令 练习: 3.4 Set(无序集合) 3.4.1 结构图 3.4.2 相关命令 练习: 3.5 Zset(有序集合) 3.5.1 结构图 3.5.2 相关命令 练习 3.6 Hash 3.6.1 结构

    2024年02月16日
    浏览(49)
  • 微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发

    系列目录 微服务 - 概念 · 应用 · 架构 · 通讯 · 授权 · 跨域 · 限流 微服务 - Consul集群化 · 服务注册 · 健康检测 · 服务发现 · 负载均衡 微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发 微服务 - Nginx网关 · 进程机制 · 限流熔断 · 性能优化 · 动态负载 · 高可用

    2023年04月18日
    浏览(46)
  • 【Redis】Redis 持久化

    Redis有两种持久化方案: RDB持久化 AOF持久化 RDB 全称 Redis Database Backup file(Redis数据备份文件),也被叫做 Redis 数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当 Redis 实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为 RDB文件,默认是保存在当

    2024年02月05日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包