Redis持久化的两种模式

Stella981
• 阅读 457

最近呢,我使用到redis的缓存这方面的知识,所以去加深了一下学习,故有一些积累的东西,在这里给大家分享一下;顺便也当作笔记一般的存在,以免以后用到的时候,又去再次查找,难道自己记录的知识,它不香吗?


1. Redis持久化策略

1.1什么是持久化

1.1.1持久化介绍

     运行环境: redis运行环境在计算机的内存中.如果redis服务器意外宕机,或者机房意外断电等.那么内存中的数据将会全部清空.势必造成业务数据的丢失. 稳定性太差。

     而且由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。

1.1.2 持久化策略介绍

     持久化:可以将内存数据按照指定的规则保存到磁盘中.当redis重启时,根据配置文件中指定的持久化文件.实现数据的恢复.

保存方式:

  • 1.多久保存一次?

               1.指定周期保存 2.实时保存

  • 2.保存的是什么?

          1.保存key-value结构 2.保存用户的操作记录

  • 3.带来的额外的开销? 是否允许?

          1.可能会丢失数据. 2.持久化文件太大.不易维护.

2. RDB模式

2.1 RDB模式介绍

  • 1.RDB模式是redis中默认的持久化的策略

  • 2.RDB模式记录的是Redis的内存快照 记录速度更快

  • 3.RDB模式是定期持久化.可能会导致少量的数据丢失.

  • 4.如果用户可以允许少量的数据丢失,则首选RDB模式.因为RDB模式工作的效率最高.

2.2 RDB模式命令

  • 1.save指令 将内存数据马上持久化到硬盘中. 该操作是阻塞的. 持久化操作优先.

  • 2.bgsave指令 后台执行持久化操作. 不能保证立即马上持久化. 当服务器空闲时,会进行持久化操作.(内存不忙) 不会陷入阻塞.

  • 3.RDB模式可以实现自动的持久化.

2.3 RDB模式的持久化策略

在redis的配置文件redis.conf中搜索save--:/save,我们将看见一下信息

save 900 1      900秒内执行1次set操作.则持久化一次.

save 300 10     300秒内执行10次set操作.则持久化一次.

save 60 10000   60秒内执行10000set操作.则持久化一次.

#save 1 1        1秒内执行1set操作.则持久化一次   性能太低.

如果有特殊的需求,可以修改持久化策略.但是需要注意性能问题。

2.4 RDB模式配置

前面一列是行数,我相信大家都懂啊!

 253 dbfilename dump.rdb    可以修改持久化文件的名称

 263 dir ./                 持久化文件的位置  ./当前文件目录

3. AOF模式

3.1 AOF模式介绍

  • 1.AOF模式默认条件下是关闭的,需要手动开启.

  • 2.AOF模式可以实现数据的实时持久化.

  • 3.AOF模式,记录的是用户的操作的过程.以追加的形式添加到配置文件之后.

  • 4.AOF模式的持久化是异步操作.不会影响用户的使用.用户使用不会陷入阻塞.

  • 5.由于AOF模式记录的是用户的操作过程,所以持久化文件较大.恢复数据时间较长.

3.2AOF模式配置

开启AOF模式

699 appendonly yes

703 appendfilename "appendonly.aof"     持久化文件名称

3.3AOF和RDB模式同时配置问题

如果RDB模式和AOF模式同时存在,以AOF模式为主. 如果不想开启AOF模式需要将配置关闭.

 699 appendonly no

3.4 AOF模式持久化策略

appendfsync always   只要用户执行更新操作,就会持久化到文件中

appendfsync everysec 默认策略  表示每秒同步一次 

appendfsync no        不主动持久化.

4. AOF和RDB总结

  • 1.RDB模式持久化是同步的方式,AOF模式异步操作.

  • 2.RDB模式记录的是内存数据的快照(只保留最新数据),

          AOF模式记录的是用户的操作过程(持久化文件较大).

  • 3.RDB模式可能会丢失少量数据.AOF模式可以实现实时持久化操作.保证数据"不丢失"

  • 4.RDB模式性能更高.AOF模式运行更为稳定.但是恢复数据的时间较长,需要定期清理维护持久化文件.

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Redis持久化RDB和AOF实现原理
Redis持久化RDB和AOF为什么Redis需要持久化?因为Redis属于内存型数据库,数据是储存在内存当中的,当遇到不可抗力因素,比如断电,那么储存在内存中的数据就会丢失。所以为了保证数据的完整性,我们需要做持久化操作,来保证数据的完整性。Redis中都有哪些持久化机制?Redis早
可莉 可莉
3年前
051. Redis 持久化机制
1\.持久化介绍Redis的数据存在在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。!image20200511165351687(https://oscimg.oschina.net/os
Stella981 Stella981
3年前
051. Redis 持久化机制
1\.持久化介绍Redis的数据存在在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。!image20200511165351687(https://oscimg.oschina.net/os
Stella981 Stella981
3年前
Redis 持久化 笔记
接触redis并不久,做项目的时候,也大概的操作罢了,比如set,get..~等等的基础操作,大概小喽啰是够用了最近大佬问我,你的redis数据有做持久化吗?我的想法..~设置了有效时间的key是未持久化的,永久的key就是持久化的大佬一个劲的在嘲笑,尴尬...偷偷笑,有我这么想.肯定还有人起步也这么认为的,哈哈哈于是学习一下redis
Stella981 Stella981
3年前
Redis持久化存储详解(一)
为什么要做持久化存储?持久化存储是将Redis存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道Redis是一个基于内存的nosql数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。持久化存储分类在Redis中,持久化存储分为两种。一种是aof日志追加的方式
Stella981 Stella981
3年前
Redis的持久化
RDB模式1、什么是RDB每隔一段时间,把内存中的数据写入磁盘,恢复的时候,他会自动从工作区拿出来进行恢复2、RDB的优劣势优势每隔一段时间,全量备份备份简单,可以直接传输文到其他地方备份的过程中会fork一个新的进程来进行文件的存储劣势发生
子非鱼 子非鱼
2年前
Redis高级
第一章Redis的持久化由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且Redis默认开启的数据持久化方式为RDB方式。1、RDB持久化方案Redis会定期保存数据快照至一个rbd文件中,并在启动时自动