redis持久化机制RDB和AOF的概念及使用

redis持久化机制RDB和AOF的概念及使用

  如果想redis仅作为纯内存的缓存来用,可禁止RDB和AOF所有的持久化机制

1. Redis持久化的作用:

  Redis 是内存数据库,其将自己的数据存储在内存中,如果 Redis 发生宕机,且没有进行持久化的,那么Redis 重启后将没有之前的数据。而通过持久化,Redis可以在重启后,快速找回之前的数据,防止大量请求打入数据库。

  对于企业级的redis架构来说,持久化是不可减少的
  企业级redis集群架构:海量数据、高并发、高可用

2. Redis持久化的重要性-缓存雪崩

  如Redis不可用了,要做的事是让Redis尽快变得可用,重启Redis,尽快让它对外提供服务,如果没做数据备份,这时Redis启动了也不可用,因为数据都没了。
  有可能大量的请求过来,缓存全部无法命中,在Redis里找不到数据,这时缓存雪崩问题,所有请求,没有在redis命中,就会去mysql数据库这种数据源头中去找,一下子mysql承接高并发,然后就挂了。

  mysql挂掉,数据也就无法恢复到Redis里面去。Redis的数据从mysql来。。。
   如果把Redis的持久化做好,备份和恢复方案做到企业级的程度,即使Redis故障了,也可通过备份数据,快速恢复,一旦恢复立即对外提供服务。

3. 持久化的方式:

快照(先把数据拷贝出来,做个备份):Mysql Dump 和 Redis   RDB
日志(某时某点的日志记录):MySQLBinlog和Hbase HLog和Redis   AOF

注:

如果同时用RDBAOF两种持久化机制,在redis重启时,会用AOF来重新构建数据,因AOF中的数据更加完整

3.1 RDB快照持久化方式

如何触发RDB持久化
  1. 手动save命令(同步)
save
  1. 手动bgsave命令(异步)
bgsave
  1. 通过配置自动触发。(自动)

RDB默认开启 在redis安装文件目录下使用如下命令关闭RDB

config set save ""

修改生成RDB的文件名
在这里插入图片描述

设置自动保存的间隔 在这里插入图片描述
每隔60s,如果超过1000个key发生了变更,就生成一个新的dump.rdb文件,当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照

savebgsave区别

save

  • 该命令会阻塞当前redis服务器,执行save命令期间,redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:

在这里插入图片描述bgsave

  • 执行该命令时,redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

在这里插入图片描述
两者总结

在这里插入图片描述
RDB优点

(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
(2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

RDB缺点

快照持久化期间修改的数据不会被保存,可能丢失数据。数据完整性比较差。

3.2 AOF 默认该模式是关闭的。

提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

在这里插入图片描述
更改配置文件开启AOF模式

在这里插入图片描述

AOF优点

(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

AOF缺点

(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
 (2) 恢复数据时时间要比快照模式慢很多。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值