11/6补充笔记

修改redis-6379.conf里面的save10秒2个数据发生改变 (save 10 2)

修改一次数据不发生改变,修改2次数据才发生改变

继续修改数据,发现还是一样的规律

增删该都发生变化,除了查以外。

save配置原理

返回结果,要对数据产生影响,数据发生了变化,或者变量达到设置要求,rdb才会发生变化。save配置要根据真实场景进行设置,否则性能可能出现问题,save配置后执行的是bgsave操作。

RDB2种启动方式对比

save指令在读写的过程中是同步的,而不敢save是异步的,save指令会阻塞客服端,bgsave读写的过程是异步的,会创建子线程(相当于启动了新进程),不会造成客服端堵塞,但会造成额外消耗内存。

rdb特殊启动指令

服务器运行过程中重启

debug reload

关闭服务器是指定保存数据

shutdown save(不管是够开启,自动执行bgsave)

RDB优点与缺点

优点:

RDB是一个紧凑压缩的二进制文件,代表Redis在某个时间点上的数据快照。非常适用于备份,全量复制等场景。比如每2小时执行bgsave备份, 并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复。RDB恢复数据远远快于AOF的方式。

缺点:

RDB方式数据没办法做到实时持久化/秒级持久化,可能保存的数据不是很完整。因为bgsave每次运行都要执行fork操作创建子进程,会额外消耗性能,频繁执行成本过高。RDB文件使用特定二进制格式保存,Redis版本更新过程中有多个格式的RDB版本,存在老版本Redis服务数据格式无法兼容新版RDB格式的问题。

AOF

使用AOF的原因:针对RDB不适合实时持久化的问题,Redis提供了AOF持久化方式来解决。

概念

AOF(append only file)持久化:以日志的方式记录数据产生的过程(每次写入时命令), 重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式

AOF写数据三种策略(appendfsync)

always(每次),每次把写入操作同步到AOF文件中,数据完整,性能较低.

everysec(每秒),每秒将缓冲区同步到AOF文件中,数据准确性和性能较高,一般都是使用这个指令,也是默认配置

no(系统控制),由操作系统控制每次同步到AOF中,整体不可控

实操:

配置:appendfilename配置为appendonly.aof,如果是多端口号的话,建议配置为appendonly-端口号.aof

1.进入conf目录配置redis-6379的conf文件

2.添加以下命令,开启持久化功能(appendonly yes|no),配置写数据策略(appendfsync always |everysec|no)

3.先杀死原来的服务进程,再重新用配置文件启动

4.进入data,查看文档是否多了一个aof的文件

5.添加数据发现文件变大了

6.在使用everysec指令,重启服务端,在修改数据之前查看文件大小

7.在写入数据之后,查看文件大小,和cat 文件.aof日志,发现修改数据日志成功

AOF重写

随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。

就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。

目的:AOF重写节省了文件占用空间,提高数据恢复效率,更小的AOF 文件可以更快地被Redis加载.

AOF重写方式:手动和自动

手动:bgrewriteaof(后台重新写入aof)

自动: auto-aof-rewrite-min-size size

    `auto-aof-rewrite-percentage` *percentage*

修改配置文件

启动客服端修改数据

查看文件和查看aof文档数据

修改之后,启动bgrewriteaof会出现以下提示

再次查看文件大小明显变小了

当我查看aof数据过程的时候是乱码,反正文件是被压缩了.

AOF手动重写 :bgrewriteaof指令工作原理

与bgsave指令相似,首先也是发送指令(控制台会反馈Background append only file rewriting started),调用fork函数生成子进程,重写.aof文件,返回消息.

AOF自动重写

自动重写触发条件设置 auto-aof-rewrite-min-size size自动重写最小体积,默认为64MB。

auto-aof-rewrite-percentage percent代表当前AOF文件空间 和上一次重写后AOF文件空间的比值。

aof_current_size AOF文件空间 aof_base_size上一次重写后AOF文件空间

自动重写触发时机

aof_current_size>auto-aof-rewrite-min-size &&(aof_current_size-aof_base_size)/aof_base_size>=auto-aof-rewrite-percentage

在客服端输入info,可以看到 Persistence(持久化),关于持久化的东西,

AOF重写流程

RDB与AOF区别

RDB产生的文件紧凑压缩比更高,占用储存空间小,因此读取RDB恢复速度更快。由于每次生成RDB开销较大,储存速度很慢,可能会丢失数据,RDB在消耗资源是重量级的,相对于AOF启动优先级很低。

AOF通过追加写命令到文件实现持久化,通过appendfsync参数可以控制实时/秒级持久化。因为需要不断追加写命令,所以AOF文件体积逐渐变大,需要定期执行重写操作来降低文件体积。由于体积很大,所以占用的储存空间很大,与RDB相比,是相反的,占用的储存空间很大,存储速度很快,恢复的速度比较慢,因为是记录的数据的储存过程,经过重写之后会变小,AOF在消耗资源方面是轻量级的,在不同的场景更改策略可以提高数据的安全性。

RDB与AOF的选者

对数据的过程很敏感,而且不要求恢复速度的话,建议使用AOF,

对数据要求完整性,建议使用RDB持久化方案,切恢复速度很快。

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

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

或者两者同时启用,优先使用AOF恢复数据,降低数据丢失的量。

持久化应用场景

应用于抢购,限购类、限量发放优惠卷、激活码等业务的数据存储设计,应用于具有操作先后顺序的数据控制,应用于最新消息展示,应用于控制黑名单设定的服务控制,应用于计数器组合排序功能对应的排名。

11/6笔记 补充(Redis持久化,RDB&&AOF)的更多相关文章

  1. Redis持久化rdb&aof

    Redis持久化rdb&aof 前言 持久化:即把数据存储于断电后不会丢失的设备中,通常是硬盘 常见的持久化方式: 主从:通过从服务器保持持久化,如mongoDB的replication se ...

  2. [动图演示]Redis 持久化 RDB/AOF 详解与实践

    Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持的数据类型很丰富,如字符串.链表.集 合.以及散列等,并且还支持多种排序功能. 什么叫持 ...

  3. [动图演示]Redis 持久化 RDB/AOF 详解与实践【华为云技术分享】

    Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.它支持的数据类型很丰富,如字符串.链表.集 合.以及散列等,并且还支持多种排序功能. 什么叫持 ...

  4. redis++:Redis持久化 rdb & aof 工作原理及流程图 (三)

    RDB的原理: 在Redis中RDB持久化的触发分为两种:自己手动触发与Redis定时触发. 针对RDB方式的持久化,手动触发可以使用: 1):save:会阻塞当前Redis服务器,直到持久化完成,线 ...

  5. Redis持久化--RDB+AOF(转)

    1.Redis两种持久化方式 RDB 执行机制:快照,直接将databases中的key-value的二进制形式存储在了rdb文件中 优点:性能较高(因为是快照,且执行频率比aof低,而且rdb文件中 ...

  6. 第十章 Redis持久化--RDB+AOF

    注:本文主要参考自<Redis设计与实现> 1.Redis两种持久化方式 RDB 执行机制:快照,直接将databases中的key-value的二进制形式存储在了rdb文件中 优点:性能 ...

  7. 春招必问的redis持久化(RDB AOF),你能答上来么?

    春招面试模拟,如同雷同,纯属巧合!!! 面试的大体流程: 第一步:一般会有笔试题,也可能没有.有笔试题就要好好答了,因为会重视笔试结果,为了节约面试官时间,HR可能先会看,不合格直接让你走人了. 第二 ...

  8. Redis学习笔记六:持久化实验(AOF,RDB)

    作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...

  9. Linux 安装redis 基本配置 发布订阅,安全配置,持久化 rdb ,aof

    redis redis相关配置1.yum  源码 rpm  yum 快速,间接,高效,解决依赖关系,(自动安装到某个路径,不可控),通过yum安装的软件查询命令 rpm -ql nginx  yum源 ...

  10. redis的持久化(RDB&AOF的区别)

    RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...

随机推荐

  1. Clover 引导 Windows 及 Linux 双系统

    Clover 引导 Windows 及 Linux 双系统UEFI cnblogs @ Orcim  此 文比较详细地介绍了通过修改 Clover 的配置文件,添加 Clover 启动项的方法(添加 ...

  2. 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据

    070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...

  3. 067 01 Android 零基础入门 01 Java基础语法 08 Java方法 05 数组作为方法参数

    067 01 Android 零基础入门 01 Java基础语法 08 Java方法 05 数组作为方法参数 本文知识点:数组作为方法参数 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...

  4. Noip 2013 真题练习

    Day1 T1 转圈游戏 Link 一句话题意: 让你求 \({x + m \times 10^k} \bmod n\) 的结果. 直接套上快速幂的板子. code #include<iostr ...

  5. 磁盘 IOPS(每秒读写次数) 的计算方法

    一.磁盘 I/O 的概念 I/O 的概念,从字义来理解就是输入输出.操作系统从上层到底层,各个层次之间均存在 I/O.比如,CPU 有 I/O,内存有 I/O, VMM 有 I/O, 底层磁盘上也有 ...

  6. 【LGR-070】洛谷 3 月月赛-官方题解

    本次免费为大家提供[LGR-070]洛谷 3 月月赛的官方题解,点个赞再走呗! 代码就不上了,大家可以到别的博客上去找找!希望这篇博客能对你有所帮助!

  7. ansible-基础和安装

    什么是ansible ansible是python中的一套模块,系统中的一套自动化工具,可以用来作系统管理.自动化命令.等任务. ansible优势 (1) ansible是python中的一套完整的 ...

  8. client: c#+protobuf, server: golang+protobuf

    前段时间看到一篇博文<可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)>,他是用C#实现的即时通讯系统,功能强大,界面漂亮. 就想用golang重写服务端,把代码下载 ...

  9. 多测师讲解python _函数中变量_高级讲师肖sir

    定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是 被定义为局部变量.在这种情况下,不论全局变量中是否用到该变量名,函数中 使用的都是局部变量.例如: num=100 #全局变量 ...

  10. LR Optimization-Based Estimator Design for Vision-Aided Inertial Navigation

    Abstract 我们设计了一个 hybrid 估计器, 组合了两种算法, sliding-window EKF 和 EKF-SLAM. 我们的结果表示, hybrid算法比单一的好. 1. Intr ...