iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis学习之持久化
  • 475
分享到

Redis学习之持久化

Redis学习之持久化 2019-03-12 05:03:00 475人浏览 才女
摘要

简介 持久化是将内存中的瞬时数据,转换为存储在磁盘上的持久数据。Redis是一个将数据存储在内存中的数据库,这也是它高效率的原因之一。但是将数据存储在内存,如果遇到突发事件,可能会造成数据的丢失。所以我们需要将数据持久化,等下次redis启

Redis学习之持久化

简介

持久化是将内存中的瞬时数据,转换为存储在磁盘上的持久数据。Redis是一个将数据存储在内存中的数据库,这也是它高效率的原因之一。但是将数据存储在内存,如果遇到突发事件,可能会造成数据的丢失。所以我们需要将数据持久化,等下次redis启动时,再次将数据加载进去即可。

RDB和AOF

redis的持久化可以分为两类,一种是快照模式的RDB,一种是日志模式的AOF。

RDB

命令

save:手动保存一次数据

bgsave:手动启动后台存储,不会立刻执行。

配置

dbfilename dump.rdb:设置数据库持久话文件名称

dir:数据文件存储位置

rdbcompression yes:持久化数据是否启用压缩,默认启用。采用lzf压缩。关闭而已节省cpu时间,但是文件会巨大。

rdbchecksum yes:设置是否对rdb文件进行校验。

stop-writes-on-basave-error yes:后台存储的过程中,如果出现错误现象,是否停止保存操作,默认是开启的。

save second changes:限定时间内,key的变化数量达到指定数量,则进行持久化。second:时间 changes:变化数量

工作原理

save命令会将数据记录到 .rdb的文件当中,当下次redis启动时会自动加载这个文件。

因为redis是单线程的,所以当我们执行一个命令的时候,其他命令只能是阻塞状态。因为磁盘的IO是很慢的,在数据量大的情况下我们使用save指令来持久化数据时,可能会造成大量的其他命令造成阻塞,直到整个RDB完毕才会顺序执行其他命令。所以生产环境不会使用save命令。

解决方案

将RDB的过程放到后台执行,不会和其他命令一同放入“任务队列”中。

bgsave:以后台方式进行保存操作,但是不是立刻执行。

当我们执行bgsave命令时,redis会使用它的fork函数启动一个子进程来进行数据的持久化。bgsave是针对save命令阻塞问题进行的优化,建议关于RDB的操作。都使用bgsave

优缺点

  • 缺点

  • RDB是一个紧凑压缩的二进制文件,存储效率高

  • RDB内存储的是redis某一个时间点的数据快照,非常适合数据备份,全量复制等场景。

  • RDB恢复数据要比AOF快很多。

  • 应用:服务器中每X小时,执行一次bgsave 并且将备份文件拷贝到远程机器,用于灾难恢复。

  • 优点

  • RDB无论是使用执行指令还是使用配置,都无法做到实时持久化,具有可能丢失一部分数据的可能性。

  • bgsave执行每次都要创建一个新子进程,会牺牲一些性能,浪费一些内存。

  • Redis各个版本中的RDB文件格式未统一,可能存在不兼容的情况。

AOF

AOF(append only file)以独立的日志方式记录每次操作影响数据的命令,重启时再重新执行一遍AOF文件中的命令以达到恢复数据的效果。与RDB相比可以描述为”该记录数据为记录数据产生的过程“

AOF解决了持久化的实时性,是主流的方式。

工作过程

在使用AOF时,redis会将影响数据的命令首先记录到一个缓存区域,当到达条件时写入到日志文件当中。

AOF写策略

  • always

    每执行一次影响数据命令,就同步到日志文件当中,数据零误差,性能地下。当你的执行命令很快的时候,需要不停的进行io操作,所以这个不常用。

  • everysec

    每秒将缓存区中的执行同步到日志文件当中,数据准确性高,性能较高。在系统宕机时,最坏会丢失1秒的数据。这个也是默认的配置。

  • no

    系统控制,由操作系统控制每次同步到日志文件的的时间,过程不可控制。

配置

  • 开启AOF

    • appendonly yes|no:开启AOF 功能,默认为不开启。
  • 配置策略

    • appendfsync:上边三种策略
  • 配置自动重写

    • auto-aof-rewrite-min-size:当当前的AOF文件尺寸达到这个值,则进行重写 aof_current_zie>auto-aof-rewrite-min-size

    • auto-aof-rewrite-percentage:当当前的AOF文件尺寸增长的百分比达到这个值,则重写

    	aof_current_size-aof_base_size/aof_base_size>auto-aof-rewrite-percentage
    

AOF重写

随着命令不断的写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF重写是将Redis内部的数据转化为写命令同步到新AOF文件的过程,简单言就是将若干数据转换为命令存储到AOF文件中。

作用

  • 降低磁盘占用

  • 提高持久化效率,降低写时间。

  • 提高恢复效率

AOF规则

  • 超时的数据不会再同步到AOF文件当中。

  • 忽略无效指令,重写时使用内部数据直接生成。

  • 合并同一条数据修改的命令 例如 lpush list1 1,lpush list1 2,lpush list1 3---->>> lpush list1 1 2 3。为了防止数据量过大,对客户端缓冲造成溢出,对于list,set,hash,zset最大只可以一次写入64个数据。

命令

  • bgrewriteaof:手动重写,后台重写AOF,当我们执行这个命令时,redis会调用fork函数创建子进程进行,将数据转换为命令覆盖AOF文件。

AOF和RDB区别

持久化方式 RDB AOF
占用存储空间 小(数据级:压缩) 大(指令级:重写)
存储速度 慢,数据量大时
恢复速度
数据安全 会丢失数据 依策略
资源消耗 高/重量级 低/轻量级
启用优先级

AOF和RDB的选择

  • 对数据非常敏感,建议使用AOF方案,因为持久化策略使用everysecond,每秒存储一次。该策略在性能上仍然可以保持很好的效果,最坏的情况也仅仅丢失1秒的数据。

  • 数据呈现阶段有效性,建议使用RDB方案,数据可以良好做到阶段内无丢失(该阶段值运维手工维护的阶段),且恢复速度快,阶段点数据使用RDB。

  • 如果不能承受分钟以内的数据丢失,对业务数据非常敏感,则使用AOF

  • 如果能承受分钟以内的数据丢失,且追求大数据集的快速恢复,选用RDB

  • 灾难恢复选择RDB

  • 双保险策略,同时开启RDB和AOF。重启后,Redis会首先使用AOF恢复数据,降低数据丢失的量。

您可能感兴趣的文档:

--结束END--

本文标题: Redis学习之持久化

本文链接: https://www.lsjlt.com/news/5745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Redis学习之持久化
    简介 持久化是将内存中的瞬时数据,转换为存储在磁盘上的持久数据。redis是一个将数据存储在内存中的数据库,这也是它高效率的原因之一。但是将数据存储在内存,如果遇到突发事件,可能会造成数据的丢失。所以我们需要将数据持久化,等下次redis启...
    99+
    2019-03-12
    Redis学习之持久化
  • redis学习3---持久化
    1、默认持久化表示在900s存一个对象,300s存10个对象,60s存10000个对象时就会自动触发RDB的持久化save 900 1save 300 10save 60 10000快照文件名,可自定义db...
    99+
    2022-10-18
  • Redis学习笔记(八) RDB持久化
    Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到磁盘,那么服务器 进程一旦退出,服务器中的数据库状态也会消失不见。 为了解决这个问题,Redis提供了RDB持久化功能,这...
    99+
    2019-01-14
    Redis学习笔记(八) RDB持久化
  • Redis学习笔记(九) AOF持久化
    除了RDB持久化功能之外,Redis还提供了AOF持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。   服务器在启动时,可以通过载入...
    99+
    2019-11-21
    Redis学习笔记(九) AOF持久化
  • Redis之持久化
    redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。redis支持两种持久化方式: 1、snapshotting(快照)也是默认方式。将内存中的数据以快照...
    99+
    2022-10-18
  • Redis之--rdb持久化
    持久化:通俗讲,下次开机还有数据,断电后不会丢失数据,存放于磁盘。 Redis:rdb快照持久化每隔N分钟或N次写操作后,从内存dump数据形成RDB文件。压缩,放在备份目录。 参数详解:从下往上看save...
    99+
    2022-10-18
  • Redis持久化之AOF
    背景:RDB不足之处1.耗时,耗性能生成快照文件耗时,load快照文件耗时Fork子进程网络开销写文件磁盘I/O开销 2.不可控,丢失数据会丢失最后一次快照最后操作的数据。 一、工作流程Redis写操作...
    99+
    2022-10-18
  • redis学习7---持久化相关测试RDB方式
    1、redis 只做缓存配置注释掉RDB持久化的配置添加内存配置和回收配置 (maxmemory  和 maxmemory-policy)2、测试RDB持久化2.1、关闭RDB持久化测试编辑配置文件# 关闭...
    99+
    2022-10-18
  • Redis高可用之持久化
    目录一、高可用什么是高可用二、Redis持久化持久化功能RDB持久化 触发条件bgsave执行流程AOF持久化执行流程命令追加文件写入和文件同步文件重写文件重写流程三、RDB和AOF的优缺点RDB持久化的优缺点...
    99+
    2023-04-07
    Redis高可用之持久化 Redis高可用 Redis持久化
  • NoSQL之redis(持久化策略)
    1.rdb方式     (1)介绍:redis默认的是通过快照来将数据持久化到磁盘中。     (2)持久化的条件:                         在900秒有一次写入,或者在300有1...
    99+
    2022-10-18
  • Redis持久化之RDB快照
    什么是RDB?1.Redis数据存储在内存中,通过save或bgsave可以在硬盘上创建一个rdb的二进制文件。这个rdb文件相当于redis的数据的快照。2.Redis 重启后,会将硬盘中rdb文件内容...
    99+
    2022-10-18
  • Redis(四):持久化之---AOF持久化的配置和原理
    AOF持久化及AOF重写的配置:默认AOF方式是关闭的,如下图:如果要开启的话,就是把no改写成yes。如下图:默认文件名称appendonly.aof,你也可以修改文件名。默认保存目录同样也是配置文件中d...
    99+
    2022-10-18
  • Redis 高可用之"持久化"
    Redis高可用概述 在Redis中,实现高可用的技术主要包括:持久化、复制(读写分离)、哨兵、集群。 持久化: 持久化是最简单的高可用方法(有时甚至不被归为高可用手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进...
    99+
    2015-10-14
    Redis 高可用之"持久化"
  • redis的持久化
    为什么要持久化?在不考虑服务器宕机的情况下,是不需要把内存中的数据保存到磁盘,来做持久化的。持久化,就是专门为宕机准备的补救措施。redis有rdb和aof两种持久化机制。一、RDB (Redis Data...
    99+
    2022-10-18
  • Redis 的持久化
    原文链接: https://www.changxuan.top/p=1386   Redis 是一个非关系型的内存数据库,使用内存存储数据是它能够进行快速存取数据的原因之一。 在实际应用中,常有人提倡把 Redis 只作为一种能够提高用...
    99+
    2018-01-28
    Redis 的持久化
  • 【Redis】Redis持久化之AOF详解(Redis专栏启动)
    📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级...
    99+
    2023-09-05
    redis 缓存 数据库 java AOF
  • rabbitmq学习系列教程之消息应答(autoAck)、队列持久化(durable)及消息持久化
    目录一、前言二、autoAck参数的讨论三、rabbitmq队列持久化操作四、2019.11.04问题补充五、2019.11.07消息的持久化六、2022.02.09增加队列持久化说...
    99+
    2022-11-13
  • Redis如何监控持久化和优化持久化?
    Redis持久化过程一直是影响redis性能的常见因素,如何监控持久化以及如何优化持久化过程呢?下面我们就一起来看看吧。fork的监控及优化不管是使用哪种持久化,RDB持久化或AOF重写,主进程都会fork...
    99+
    2022-10-18
  • Redis持久化机制
    1、Redis数据持久化的必要性 由于redis是基于内存的数据库,面临数据掉电易失的风险,要避免数据丢失,最好将内存数据持久化到磁盘等永久存储介质上。服务重启时,会先加载磁盘文件内的数据到内存,完成数据恢复。 2、RDB(Red...
    99+
    2020-06-06
    Redis持久化机制
  • redis数据持久化
    1 redis是内存型的数据库 redis数据放在内存中 重启服务器丢失数据 重启redis服务丢失数据 断电丢失数据 为了防止redis数据丢失, 进行持久化, 所以将数据写入到一个文件中来实现 2 rdb持久化 在配置文件中, 添加rd...
    99+
    2021-06-10
    redis数据持久化
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作