我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis的持久化介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis的持久化介绍

一、持久化的作用

1.什么是持久化

redis的所有数据保存在内存中,对数据的更新将异步的保存到硬盘上

2.持久化的实现方式

快照:某时某刻数据的一个完成备份    -mysql的Dump    -redis的RDB写日志:任何操作记录日志,要恢复数据,只要把日志重新走一遍即可    -mysql的 Binlog    -Hhase的 HLog    -Redis的 AOF

二、RDB

1.什么是RDB

Redis的持久化介绍

2.触发机制-主要三种方式

第一种:save(同步)

1 客户端输入save命令----》redis服务端----》同步创建RDB二进制文件

2 会造成redis的阻塞(数据量非常大的时候)

3 文件策略:如果老的RDB存在,会替换老的

4 复杂度 o(n)

第二种:bgsave(异步,Backgroud saving started)

1 客户端输入save命令----》redis服务端----》异步创建RDB二进制文件(fork函数生成一个子进程(fork会阻塞reids),执行createRDB,执行成功,返回给reids消息)

2 此时访问redis,会正常响应客户端

3 文件策略:跟save相同,如果老的RDB存在,会替换老的

4 复杂度 o(n)

第三种:(常用方式)(******)自动(通过配置文件)
配置   seconds   changes
save   900        1save   300        10save   60         10000如果60s中改变了1w条数据,自动生成rdb
如果300s中改变了10条数据,自动生成rdb
如果900s中改变了1条数据,自动生成rdb

以上三条符合任意一条,就自动生成rdb,内部使用bgsave

#配置:

save 900 1 #配置一条

save 300 10 #配置一条

save 60 10000 #配置一条

dbfilename dump.rdb  #rdb文件的名字,默认为dump.rdb

dir ./ #rdb文件存在当前目录

stop-writes-on-bgsave-error yes #如果bgsave出现错误,是否停止写入,默认为yes

rdbcompression yes #采用压缩格式

rdbchecksum yes #是否对rdb文件进行校验和检验

#最佳配置

save 900 1

save 300 10

save 60 10000 dbfilename dump-${port}.rdb

#以端口号作为文件名,可能一台机器上很多reids,不会乱

dir /bigdiskpath #保存路径放到一个大硬盘位置目录

stop-writes-on-bgsave-error yes

#出现错误停止

rdbcompression yes #压缩

rdbchecksum yes #校验

RDB触发机制一般使用第三种方式,但是这种方式也会有缺点。如果修改的条数没有在设置范围内那么就不会触发,就会引发很多数据没有持久化的情况。所以我们一般采用下面方式:AOF。

如果是保存不重要的数据可以使用RDB方式(比如缓存数据),如果是保存很重要的数据就要使用AOF,但是两种方式也可以同时使用。

三、AOF

1.RDB问题

耗时,耗性能。不可控,可能会丢失数据。

2.AOF介绍

客户端每写入一条命令,都记录一条日志,放到日志文件中,如果出现宕机,可以将数据完全恢复

3.AOF的三种策略

日志不是直接写到硬盘上,而是先放在缓冲区,缓冲区根据一些策略,写到硬盘上

#第一种:always:redis--》写命令刷新的缓冲区---》每条命令fsync到硬盘---》AOF文件

#第二种:everysec(默认值):redis——》写命令刷新的缓冲区---》每秒把缓冲区fsync到硬盘--》AOF文件

#第三种:no:redis——》写命令刷新的缓冲区---》操作系统决定,缓冲区fsync到硬盘--》AOF文件

命令alwayseverysecno
优点不丢失数据    
每秒一次fsync,丢失1秒数据不用管  
缺点    
IO开销大,一般的sata盘只有几百TPS丢1秒数据不可控

4.AOF重写

随着命令的逐步写入,并发量的变大, AOF文件会越来越大,通过AOF重写来解决该问题

原生AOFAOF重写

set hello world<br/>

set hello java<br/>

set hello hehe<br/>

incr counter<br/>

ncr counter<br/>

rpush mylist a<br/>

rpush mylist b<br/>

rpush mylist c<br/>

过期数据

set hello hehe<br/>

set counter 2<br/>

rpush mylist a b c


本质就是把过期的,无用的,重复的,可以优化的命令,来优化这样可以减少磁盘占用量,加速恢复速度

实现方式

bgrewriteaof:客户端向服务端发送bgrewriteaof命令,服务端会起一个fork进程,完成AOF重写

AOF重写配置:

重写流程

Redis的持久化介绍

AOF配置文件 (******)

appendonly yes #将该选项设置为yes,打开appendfilename "appendonly-${port}.aof" #文件保存的名字appendfsync everysec #采用第二种策略dir /bigdiskpath #存放的路径no-appendfsync-on-rewrite yes #在aof重写的时候,是否要做aof的append操作,因为aof重写消耗性能,磁盘消耗,正常aof写磁盘有一定的冲突,这段期间的数据,允许丢失

四、RDB和AOF的选择

1.rdb和aof的比较

命令rdbaof
启动优先级低    
高(挂掉重启,会加载aof的数据)    
体积小  

恢复速度    

数据安全性    
丢数据  
根据策略决定    
轻重    
重    

2.rdb最佳策略

rdb关掉,主从操作时
集中管理:按天,按小时备份数据
主从配置,从节点打开

3.aof最佳策略

开:缓存和存储,大部分情况都打开,
aof重写集中管理
everysec:通过每秒刷新的策略

4.最佳策略

小分片:每个redis的最大内存为4g
缓存或存储:根据特性,使用不通策略
时时监控硬盘,内存,负载网络等
有足够内存

以上就是Redis如何实现持久化方案(RDB和AOF使用)的详细内容,更多请关注亿速云其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis的持久化介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis 的持久化

原文链接: https://www.changxuan.top/?p=1386 Redis 是一个非关系型的内存数据库,使用内存存储数据是它能够进行快速存取数据的原因之一。在实际应用中,常有人提倡把 Redis 只作为一种能够提高用户体验的组件来使用, 也就是
Redis 的持久化
2018-01-28

Redis的持久化方式

目录一、概述二、Redis持久化–RDB1、RDB的保存文件和保存路径2、RDB的保存策略3、RDB持久相关配置(在redis.conf配置文件中)4、RDB的备份与恢复5、RDB的优缺点三、Redis持久化–AOF
Redis的持久化方式
2024-10-24

redis 的持久化机制

redis 持久化机制有两种:RDB 和 AOF。RDBRDB 机制是对 redis 中的数据执行周期性的持久化。每个几分钟、几小时、几天生成 redis 内存中的数据的一份完整的快照。AOF每条写入命令作为日志,写入 aof 文件中。现代操作系统中,写入文件
redis 的持久化机制
2015-09-25

Redis的持久化详解

目录一、Redis的持久化二、RDB(Redis DataBase)1、RDB快照原理2、RDB配置3、redis.conf 其他一些配置4、RDB的备份恢复5、RDB优缺点三、AOF(Append Of File)1、AOF原理2、AOF
2023-06-05

redis数据持久化

1 redis是内存型的数据库redis数据放在内存中重启服务器丢失数据重启redis服务丢失数据断电丢失数据为了防止redis数据丢失, 进行持久化, 所以将数据写入到一个文件中来实现2 rdb持久化在配置文件中, 添加rdb持久化参数vim redis-6
redis数据持久化
2021-06-10

redis持久化存储

redis持久化存储 redis持久化存储redis多被用于缓存和消息中间件,当被用作缓存时,数据的读写都是在内存中进行的,而内存一旦在主机断电或者主机重启时里面的数据将被清空,为保证数据不被丢失,redis为我们提供两种数据持久化存储方式:RD
redis持久化存储
2020-12-12

Redis 持久化详解

http://www.redis.cn/topics/persistence.html持久化Redis 如同其他的存储组件一样,提供了两类持久化方式:快照,和全量追加日志。RDB - 快照在默认情况下, Redis 将数据库快照保存在名字为dump.rdb的
Redis 持久化详解
2015-08-16

编程热搜

目录